0

私の目標は、ユーザーが地図上の特定の場所をクリックして目印を追加し、アイコンをクリックして目印を編集できるようにすることです (名前の変更、移動など)。PictureBox を使用して地図を表示し、MouseDoubleClick イベントを登録することで、GDI+ DrawImage() メソッドを使用して地図上に画像を描画しています。問題は、目印の画像が描画された後、編集できないことです。ユーザーはアイコンをクリックして移動したり、名前を変更したりできません。従うことができる他のデザインパターンはありますか? たぶん他のコントロールを使用しています...?

4

2 に答える 2

1

それぞれが画面の目印となるオブジェクトのリストを作成できます。これらのオブジェクトには、少なくとも 2 つのプロパティ X と Y があり、public bool Contain(int x, int y)このオブジェクトにこのポイントが含まれているかどうかを示すメソッドがあります。

 public class placemark
 {
      public int X;
      public int Y;

      public bool Contain(int x, int y)
      {
           // some logic here
           return true;
      }
 }

ユーザーが画面をクリックすると、 foreach ループによって、各オブジェクトにマウス位置が含まれていることを確認して、ユーザーが選択したいオブジェクトを見つけます。

 foreach(var placemark in placeMarkList)
 {
      if (placemark.Contain(e.x,e.y))
      {
           placemark.X+=e.x-oldx;
           placemark.X+=e.y-oldy;
      }
 }

したがって、そのオブジェクトのプロパティ X と Y と Invalidate() Picturebox を変更できます。

于 2010-04-15T07:40:28.913 に答える
0

アイテムを重ねるという概念が必要です。そのアイコンを画像に配置するときは、その座標/サイズを配列に保存する必要があります。ユーザーがアイコンをクリックすると、保存された座標に基づいてその場所を検出し、ユーザーがアイコンを選択/移動できるようにして、メインの背景画像 + アイコンのレイヤー化された配列に基づいて、画像を再描画します。

于 2010-04-14T20:08:44.830 に答える