QGraphicsView的一个令人惊叹的功能是它能够根据场景的内容(实际上是插入到场景中的每个QGraphicsItem )进行自我缩放。我插入的QPixmap可以正确缩放,这意味着如果我提供4x4的比例因子:
view->scale(4,4);像我想做的那样缩放Pixmap。
但这不是我习惯绘制的矩形的情况;它们的目的是包围我在场景中绘制的像素图,无论比例因子如何,它们的厚度都保持为1,而不是-我猜- 4。
我一直在搜索所有这些东西的文档,试图弄清楚“化妆品笔”的确切用途,但我仍然无法让我的矩形变得更粗。
最后注意:我有一个自定义的QGraphicsItem,用于绘制矩形的QPen在
virtual void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget);方法。
有关系吗?
提前感谢并为我在Qt框架和绘图算法领域缺乏经验/知识而道歉……
发布于 2012-10-29 20:08:52
在哪里实例化QPen实际上并不重要。
QPen的默认宽度为0。这是一个特殊的值,表示修饰是真的,宽度实际上是1。因此,如果你不想让笔是修饰的,你必须将它设置为所需的宽度。您可能还需要将cosmetic设置为false。
下面是一个简单的例子:
#include <QtGui>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QGraphicsView view;
QGraphicsScene scene;
QGraphicsRectItem *item1 = scene.addRect(20, 20, 20, 20);
QGraphicsRectItem *item2 = scene.addRect(50, 20, 20, 20);
QPen pen1, pen2;
pen1.setWidth(5);
pen2.setWidth(5);
pen1.setCosmetic(true);
pen2.setCosmetic(false);
item1->setPen(pen1);
item2->setPen(pen2);
view.setScene(&scene);
view.scale(4, 4); // both rects are the same size, but one a has wider pen
view.show();
return a.exec();
}https://stackoverflow.com/questions/13120486
复制相似问题