QGraphicsView
的一个惊人功能是它能够根据场景的内容进行缩放(实际上每个QGraphicsItem都插入到场景中)。我插入的QPixmap
正确缩放,这意味着如果我提供4x4的比例因子:
view->scale(4,4);
像我想要的那样缩放Pixmap。
但这不是我习惯画画的情况;它们的目的是围绕我在场景上绘制的像素图,无论比例因子如何,它们都保持1的厚度而不是 - 我猜 - 4。
我一直在搜索所有这些东西的文档,试图找出“化妆笔”的确切目的,但我仍然无法让我的矩形更厚。
最后通知:我有一个自定义QGraphicsItem
,用于绘制矩形的QPen在
virtual void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget);
方法
重要吗?
感谢您在Qt框架和绘图算法领域缺乏经验/知识,并提前道歉......
答案 0 :(得分:13)
在实例化QPen的地方并不重要。
QPen的默认宽度为0.这是一个特殊值,表示化妆品为真,宽度实际为1.因此,如果您不希望笔是化妆品,则必须将其设置为所需的宽度。您可能还需要将化妆品设置为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();
}