如何使qt qgraphicsview规模不影响点画模式?

时间:2012-12-19 18:04:54

标签: qt qgraphicsview qpixmap

我在QGraphicsView内画了几个矩形;我通过使用QBrush创建QPixmap来使用自定义点画模式。这将按预期显示默认缩放级别。

当我拨打view->scale()时,矩形会像我预期的那样显得更大或更小。然而,Qt已经缩放了点画模式的各个位,这是预期的;我希望它能用画笔再次绘制更大或更小的矩形。 例如。 如果我使用了带有一个像素点和像素空间的点画图案,在放大后,我想看到一个更大的矩形,但我想要相同的点画图案具有相同的像素间隙。这是可以实现的吗?感谢。

3 个答案:

答案 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值会产生预期的效果 - 并且更少回旋。