我在里面画了几个矩形QGraphicsView
;我通过QBrush
使用我的QPixmap
. 这将按预期以默认缩放级别显示。
当我调用view->scale()
时,矩形显示得更大或更小,正如我预期的那样。然而,Qt 已经对点画图案的各个位进行了缩放,这是意料之中的;我希望它用画笔再次绘制更大或更小的矩形。例如。如果我使用具有一个像素点和像素空间的点画图案,放大后,我想看到一个更大的矩形,但我想要具有相同像素间隙的相同点画图案。这是否可以以某种方式实现?谢谢。
我在里面画了几个矩形QGraphicsView
;我通过QBrush
使用我的QPixmap
. 这将按预期以默认缩放级别显示。
当我调用view->scale()
时,矩形显示得更大或更小,正如我预期的那样。然而,Qt 已经对点画图案的各个位进行了缩放,这是意料之中的;我希望它用画笔再次绘制更大或更小的矩形。例如。如果我使用具有一个像素点和像素空间的点画图案,放大后,我想看到一个更大的矩形,但我想要具有相同像素间隙的相同点画图案。这是否可以以某种方式实现?谢谢。
我在 Qt 中开发 EDA 工具伴侣时遇到了同样的问题。
经过一番尝试,我所做的(并且似乎对我有用)是创建一个自定义图形项。在绘画方法上,我这样做:
QBrush newBrush = brush_with_pattern;
newBrush.setTransform(QTransform(painter->worldTransform().inverted()));
painter->setBrush(newBrush);
那就是将项目的逆变换应用于画笔(因此它不会缩放)。
我认为 setDashOffset 仅用于形状的边框(不是填充)。
你可以使用 QPen::setDashOffset:
http://harmattan-dev.nokia.com/docs/library/html/qt4/qpen.html#setDashOffset
您需要根据场景缩放/缩放级别设置偏移量。您可以通过调用 scene() 来获取指向项目中场景的指针,但不要忘记检查 NULL,因为它在未添加到场景时将为 NULL(尽管理论上您不应该得到一个 paint()不在场景中时)。
另一种选择是使用:
http://doc.qt.digia.com/qt/qpainter.html#scale
撤消在您的画家上缩放的视图。
如果有人仍在关注此问题,此处有关标准填充模式而不是像素图填充模式的缩放的相关问题可能会有所帮助。基本上,可能无法修改标准填充图案的缩放比例(列出了一些解决方法),但是,如果您正在寻找不同的颜色,尤其是灰度级,使用 alpha 值会产生所需的效果 - 而且要少得多令人费解。