我在QGraphicsView
内画了几个矩形;我通过使用QBrush
创建QPixmap
来使用自定义点画模式。这将按预期显示默认缩放级别。
当我拨打view->scale()
时,矩形会像我预期的那样显得更大或更小。然而,Qt已经缩放了点画模式的各个位,这是预期的;我希望它能用画笔再次绘制更大或更小的矩形。
例如。
如果我使用了带有一个像素点和像素空间的点画图案,在放大后,我想看到一个更大的矩形,但我想要相同的点画图案具有相同的像素间隙。这是可以实现的吗?感谢。
答案 0 :(得分:6)
我在Qt开发EDA工具伴侣时遇到了同样的问题。
经过一番尝试,我所做的(似乎对我有用)就是创建一个自定义图形项目。关于绘画方法,我这样做:
QBrush newBrush = brush_with_pattern;
newBrush.setTransform(QTransform(painter->worldTransform().inverted()));
painter->setBrush(newBrush);
即将项目的逆变换应用于画笔(因此它不会缩放)。
我认为setDashOffset仅适用于形状的边框(不是填充)。
答案 1 :(得分:0)
您可以使用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
撤消对画家的缩放视图。
答案 2 :(得分:0)
如果有人还在关注此问题,the source关于缩放标准填充图案而不是像素图填充图案可能有所帮助。基本上,可能无法修改标准填充模式的缩放(列出了一些解决方法的想法),但是,如果您正在寻找不同的颜色,尤其是灰度级,则使用alpha值会产生预期的效果 - 并且更少回旋。