いつもお世話になっております。
質問ですが、扇形のリージョンを簡単に作成する方法はないのでしょうか?
関数には扇形のリージョンを作成するものがないようなのですが、
たとえば円のリージョンを作成して必要ないところを省いていくような
方法しかないのでしょうか?
単純な質問ですが、おわかりになる方がいらっしゃいましたら教えてください。
自分で座標計算をしてポリゴンで作成する手もあると思いますよ。
ある程度刻みで座標を計算すれば、それらしく見えると思います。
円形リージョンからいらない部分を外す方法とどちらが簡単なのは
かなり微妙ですけれど。
円形のリージョンとポリゴンリージョンを組み合わせて
ANDで合成する手も有りますよね。
いずれにせよ、ある程度の座標計算は必要だと思いますよ。
Windows NT/2000系であればパス使用して
扇形リージョンの作成ができます。
CPaintDC dc(this);
dc.BeginPath();
dc.Pie(0,0,100,100, 0,0, 100, 100);
dc.EndPath();
CRgn rgn;
rgn.CreateFromPath(pDC);
dc.PaintRgn(&rgn);
デバイスコンテキストに扇形のパスを作っておいて、
PathToRegion(CRgn::CreateFromPath)で作るという手もありかも。
Fackt様・dairygoods様 お返事ありがとうございます。
Win98でも使用するのでパスは使えないんです。
リージョンに扇形がないのはマイクロソフトの手抜きですね。
作っていほしい…
PATIO様 お返事ありがとうございます。
やっぱり、どうあっても座標計算がいるんですね。
小さな三角形を複数組み合わせることで実行することにしました。
これが、一番やりやすいかったので。
みなさん、アドバイスありがとうございました。