1

クラスとパネルを使用してGraphics、フォームに幾何学的形状を描画できます。この形状にイベントを適用できないことを理解しました(クリック、ドラッグなど)。

たとえば、ドラッグ アンド ドロップで形状を移動できるようにするために、イベントを適用できる幾何学的形状 (おそらくポイントを使用) を作成するにはどうすればよいですか?

4

1 に答える 1

2

これらの図形を描画しているパネルにイベント ハンドラーを直接アタッチすると、それらを使用して、ユーザーがマウスをホバリングしている場所、クリックした場所、ドラッグしているかどうかなどを判断できます。ポイントの頂点をクリックする (おそらく形状を変更できる) か、ポリゴンを定義するポイントのセット内をクリックする (おそらく移動できる)。次に、ユーザーのマウスの「ジェスチャー」に基づいてその形状を定義するポイントの配列に必要な変更を加えることができます。これは、次のウィンドウ Paint() で形状を再描画するために使用されます。

「どのシェイプがクリックされたかを知るにはどうすればよいか」に対する簡潔な答えとして、「ポリゴン内のポイント」テストを実装します。多角形 M を定義する一連の点と、M の内側にある場合とない場合がある点 P が与えられた場合、テストしたい形状の外側にあることが保証されている点 Q を見つけ、P と Q の間に仮想線 PQ を引き、どのようになるかを数えます。 PQ が交差する M の多くの線分。その数が奇数の場合、P は M 内にあります。

于 2012-09-10T19:38:06.850 に答える