2017-04-17 181 views
0

我想在整个圆周间以规则的间距在彼此之间画出这些黑点(粗略的图像在下面)。那些黑点应该直接坐在圆上。有没有简单的方法来做到这一点painter.drawArc()函数或类似的东西?QPainter - 沿着一个圆圈绘制物体

Desired ouput

+0

@dtech我怕的就是这个。这不是问题,但我希望在Qt中有一个聪明的内建解决方案。这是一个耻辱。 – Croolman

回答

2

不,没有。 I am afraid you will have to use... math

其实,你可以逃脱没有。特别是对于一个圆圈来说,有一个简单的方法可以通过改变画家来完成。您最初将画家转换为圆圈的中心,并在圆圈12点位置绘制第一个圆点。这意味着将其绘制到负y空间。然后,您只需旋转画家360/numOfObjects度并再次绘制相同的圆。

这里的关键是将画家转换到中心并绘制对象偏移量,否则计算位置和角度会比较复杂。这个角度在这里不起作用,因为你正在绘制点,但是如果你绘制点以外的东西,它会产生巨大的变化。通过这种方式,您可以通过绕其原点旋转画家来轻松扫掠圆圈。

为了把它放在伪代码:

draw big circle 
move painter to big circle center 
degree = 360/numOfObjects 
while numOfObjects-- 
    draw dot at 12 o'clock 
    rotate painter by degree 
+0

工程就像一个魅力!如果稍后将其用于其他绘图,不要忘记将画家翻译回来也许是件好事。 – Croolman

+0

如果可以,还有其他问题。任何想法如何用'QGraphicsScene()'完成? – Croolman

+1

在同一件事情中,点对象的起点将在圆的中心和实际的点偏移处,然后您将有一组点图形项目,每个点都旋转一步。 – dtech