QGraphicsView的一个惊人功能是它能够根据场景的内容进行缩放(实际上每个QGraphicsItem都插入到场景中).我插入的QPixmap正确缩放,这意味着如果我提供4×4的比例因子:
view->scale(4,4);
像我想要的那样缩放Pixmap.
但这不是我习惯绘画的情况;它们的目的是围绕我在场景上绘制的像素图,无论比例因子如何,它们都保持1的厚度而不是 – 我猜 – 4.
我一直在搜索关于所有这些东西的文档,试图找出“化妆笔”的确切目的,但我仍然无法让我的矩形更厚.
最后通知:我有一个自定义的QGraphicsItem,用于绘制矩形的QPen在运行中即时实现
virtual void paint(QPainter *painter,const QStyleOptionGraphicsItem *option,QWidget *widget);
方法.
有关系吗?
在此感谢您对我在Qt框架和绘图算法领域缺乏经验/知识表示歉意……
解决方法
在实例化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); QGraphicsRectItem *item2 = scene.addRect(50,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(); }