• ベストアンサー

作成したリージョンの面積の算出法

お世話になります。 Visual BasicでCombineRgnのAPIを使って複雑な形のリージョンを作成したのですが、作成したリージョンの面積を出す方法(APIとか)は無いのでしょうか?自分でも可能な限り調べてみたのですが、良い方法が見つかりません。 CombineRgnでandをとっているので、合体させた図形の間に重複があるために単純にもとの図形の面積を足し合わせるだけではだめみたいで・・・。 もし何か良い方法があれば教えていただけたら幸いです。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

簡単計算APIはないと思います。 私も以前に同じようなことを思って、大昔に他のC言語系掲示板に投稿したことがあります。(約10年ぐらい前?) その頃は「無い」という解答をもらいました。 CombineRgnを利用しているってことは、 「Create~Rgn」系のAPIを利用していると思います。 PolygonでもRectでもRoundでも、座標を持って作成されていると思います。 それぞれの面積・接点・交点などを計算して求めるしかないと思います。 やったことはないですが、想像できる「結果ありき」でもよいのであれば、、、 合成Rgnを塗りつぶし描画して「GetPixex」などで、ピクセルループで色を求めたら何とかなるかも。。。 (これは問題外か・・・) 多分質問者さんも想像していると思うのですが、やはり一発で面積を求めることはできないと思います。 プログラミングを抜きに、「数学カテ」に質問したら、いいアドバイスをもらえるかもしれませんよ。 それでもプログラミングでの結果を望むのであれば、APIであればCカテの方が、経験者がいるかも?(10年経てば、何か方法がでてるかなぁ)

pochi_sun
質問者

お礼

丁重なお返事,有難うございます!!! やはり決して簡単ではないんですね. MSDNとかもあらかたさらってみたのですがそれらしきものがなくて・・・. >合成Rgnを塗りつぶし描画して「GetPixex」などで、ピクセルループで色を求めたら何とかなるかも。。。 これは面白い方法ですが,処理時間が結構かかりそうですね. 次々とリージョンを更新していき随時面積を求めたいので,少し厳しいかも. 数学的に求められるかなぁ・・・. やろうとしていること,かなり難解だと思います.(笑) とりあえず藁にもすがるつもりでCカテの方にも聞いてみます!