在绘图中缩放已绘制的QPolygonF

时间:2013-10-23 16:41:47

标签: c++ qt qpolygon

所以, 我在我定义的区域中绘制了一个QPolygonF。该区域继承自QGraphicsView。

我想要做的是让用户在QPolygonF的控制点周围移动并改变多边形,即使它已经创建。我真的找不到如何做到这一点的参考。

由于我绘制线条以关闭并表示多边形,并且在可绘制区域中可以有更多的东西,清除它并反复绘制它似乎不对。

有谁知道我怎么解决这个问题?

谢谢!

2 个答案:

答案 0 :(得分:1)

我有点困惑为什么你描述你的'区域'继承自QGraphicsView,但后来讨论QPolygonF。如果你正在使用QGraphicsView,这意味着你有一个QGraphicsScene并且将使用QGraphicsPolygonItem。

然而,假设QGraphicsView在这里不相关,QPolygonF只是一个继承点向量的类; QVector。

您应该能够遍历这些点并将其移动到您想要的任何位置。你可以得到这样的观点: -

QPolygonF poly; // assume it has been given a number of points
QPointF& point = poly[index]; // where index is the index into the QVector of points

然后你可以移动这一点: -

point.SetX(xPos);
point.SetY(yPos);

移动项目作为一个点移动应该不是问题。

答案 1 :(得分:0)

清除它并重新绘制整个场景可能是最有效的方法。唯一的另一种选择是尝试计算多边形变化时的最小边界矩形并尝试仅使该区域无效,但它实际上是相同的。 Qt绘图非常快,特别是当你利用opengl集成时。当我开始担心重新绘制整个场景时,我提醒自己,视频游戏一直在做。 :P