背景:
私は最近、GDI+ をいじって、360 度にわたる抜本的な色の変化を表示する「ディスク」を描画しました。(HSL(1,1,1) -> HSL(360,1,1) をループする HSL から RGB へのコードをいくつか掘り下げました)
ディスクに関しては、最初に上記を使用して完全な黒丸を描き、次に中心の上に灰色で2番目の円を描き、次のようにします
これで問題ありません... しかし、GDI+ は、FillPie
メソッドを介してここで行われている多くのトリッキーな一致から私たちを隔離していることに気付きました。また、FillPie
半径の長さではなく、円の境界の四角形を指定する必要があります。また、完全なセグメント塗りつぶしを行い、そのセグメントの一部のみを指定することはできません。
質問:
誰かが私をいくつかの数学関数の方向に向けたり、次の「緑で塗りつぶされた領域」の面積とプロットポイントを計算するために必要なフォーラムについて説明したりできますか?
Point `c` - an x,y co-ordinate
Angle `A` - an angle from horizontal
Angle `B - an angle from horizontal where `B` - `A` == the sweep angle
Length `r` - a distance from `c`
Length `r2` - a distance from `c` where `r2` - `r` == the `height` of the segment to be filled.
数学ソースへのリンクは問題ありませんが、Google で簡単に検索して Wolfram Math を調べたところ、探していたものを見つけることができました。Point[]
また、 Graphics.FillPolygon に渡すことができる境界 (x,y) co-or のシーケンスを生成する何らかの方法があれば、それもすばらしいでしょう。