投稿日 | : 2007/07/12(Thu) 10:00 |
投稿者 | : よねKEN |
Eメール | : |
URL | : |
タイトル | : Re: フリーハンドで描いたオブジェクトを選択したか?判定したい |
> PictureBoxにフリーハンドで描いたオブジェクトがあります。
「オブジェクトがある」というためにはまずオブジェクトを管理しておく必要がある、
ということは既に他の方からご指摘のあるところですね。
> そのオブジェクトを選択したかどうか?という判定を
> どのように行えば良いか分かりません。
まずはどう管理するかを考えましょう。
・点なら
→(x,y)、太さ、z
・線なら
→始点(x1,y1)、終点(x2,y2)、太さ、z
・フリーハンドなら
→(x,y)の配列(要素数Nは動的)、太さ、z、
を持っておく必要があると思います。
オブジェクト同士が重ならないならzは不要です。太さも1固定であれば不要です。
さらにオブジェクトの有無を調べやすくするために、
各オブジェクトはそのオブジェクトのすべての点を内包する
長方形の左上、右下の座標も持っておいた方が便利かもしれません。
後は、ある点がどのオブジェクトに含まれているかの判定を行うことになりますね。
線上に点があるかどうかは、y = ax + b の式から計算できますね。
フリーハンドの場合はこれを点1と点2の線分、点2と点3の線分、・・・、
という風にチェックを繰り返すことになります。
ただし、この方法だと1ドット単位で正確にオブジェクトに触らないといけないことになるので、
厳密には線分上にあるかどうかではなく、線分から一定の距離内にあるかどうか?
を判定することになります。