2017-04-17 25 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

関連する問題