QPainter - 沿圆形绘制对象

时间:2017-04-17 10:12:23

标签: c++ qt drawing qpainter

我想在整个圆周围绘制那些黑点,彼此之间有规则的间距(下面的粗略图像)。那些黑点应该直接坐在圆圈上。有没有一种简单的方法可以用painter.drawArc()函数或类似的东西来做某事?

Desired ouput

1 个答案:

答案 0 :(得分: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