円をベジェに変換しようヽ(´∀`)ノ
数学が全然できないシーラカンスでありますが、このたびは円弧を任意の大きさ任意の角度で描画する必要に迫られました。言語はC#なのでGDI+を使えばいいのですが、pinvokeしまくりなプログラムを書いている私にはそんな邪道なことはできません(-_-;)
どうでもいいことですが、HDCハンドルに対してnative APIを使った場合、Graphicsから取得したHDCハンドルに描画すると元のGraphicsに変更が反映されるのですが、GraphicsをHDCハンドルから作成しそのGraphicsに対して描画しても元のHDCハンドルには変更が反映されません。(お経みたいだ……)
なのでHDCハンドルに対してGraphicsクラスのメソッドで描画しようと思った場合、
- HDCからGraphicsを作成
- Graphicsに対してゴニョゴニョ
- Graphicsの内容をHDCにライトバック
のようにする必要があります。
で、任意の角度・大きさの楕円の円弧を描くときには、その曲線情報をベジェに変換する必要があるですが、これがまた難しいのです。参考ページ(http://www.tensyo.com/urame/prog/ALGO.HTM#C1)が無かったらきっとできなかったでしょう。HPの作者さんには感謝です。
すいません、今日は眠いのでまた明日にさせてください。いい夢を。