QPainter - 沿圆圈绘制对象

QPainter - draw objects along a circle

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

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

实际上,没有那个你也可以逃脱。特别是对于围绕一个圆圈进行扫掠,有一种简单的方法可以通过变换画家来完成。您最初将画家变换到圆心,并在圆的 12 点钟位置绘制第一个点。这意味着将其绘制为负 y space。然后,您只需将画家旋转 360 / numOfObjects 度,然后再次绘制相同的圆圈。

这里最关键的是将painter转换到中心,绘制物体偏移,否则自己计算位置和角度会比较复杂。角度在这里不起作用,因为您绘制的是点,但是如果您绘制的不是点,角度就会有很大的不同。这样你就可以很容易地通过围绕它的原点旋转画家来扫圆。

用伪代码表示:

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