【问题标题】:QPainter - draw objects along a circleQPainter - 沿圆圈绘制对象
【发布时间】:2017-04-17 10:12:22
【问题描述】:

我想在整个圆圈周围画出那些黑点,彼此之间有规则的间距(下图)。那些黑点应该直接位于圆圈上。有没有一种简单的方法可以使用painter.drawArc() 函数或类似的方法来实现它?

【问题讨论】:

  • @dtech 我很害怕。这不是问题,但我希望在 Qt 中有一个聪明的内置解决方案。真可惜。

标签: c++ qt drawing qpainter


【解决方案1】:

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

实际上,你可以不这样做。特别是围绕一个圆圈扫过,有一种简单的方法可以通过改变画家来做到这一点。您最初将画家变换到圆的中心,并在圆的 12 点钟位置绘制第一个点。这意味着将其绘制到负 y 空间中。然后您只需将画家旋转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

【讨论】:

  • 像魅力一样工作!最好不要忘记将画家翻译回来,如果以后用于其他图纸。
  • 如果可以的话,还有一个问题。知道如何使用QGraphicsScene() 来完成吗?
  • 几乎在同一件事上,点对象的原点将在圆的中心和实际的点偏移量,然后你会有一个点图形项目数组,每个都旋转一步。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-31
  • 2014-04-11
  • 2012-09-19
相关资源
最近更新 更多