VB6.0用掲示板の過去のログ(No.2)−VBレスキュー(花ちゃん)
[記事リスト] [新規投稿] [新着記事] [ワード検索] [管理用]

投稿日: 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ドット単位で正確にオブジェクトに触らないといけないことになるので、
厳密には線分上にあるかどうかではなく、線分から一定の距離内にあるかどうか?
を判定することになります。


- 関連一覧ツリー (★ をクリックするとツリー全体を一括表示します)

- 返信フォーム (この記事に返信する場合は下記フォームから投稿して下さい)

- VBレスキュー(花ちゃん) - - Web Forum -