2010-04-14 44 views
0

我的目標是讓用戶點擊地圖上的特定位置來添加地標,然後通過單擊其圖標來編輯地標(更改其名稱,移動它,等等)。 我正在使用PictureBox來顯示地圖,並通過註冊MouseDoubleClick事件我正在使用GDI + DrawImage()方法在地圖上繪製圖像。問題是,在繪製地標的圖像之後,它不能編輯:用戶無法單擊圖標並移動它,更改其名稱等。是否還有其他可以遵循的設計模式?也許使用其他控件...?C#:在PictureBox中創建可編輯的對象

+1

你失去了我的「它不可編輯」。編輯任何東西都需要代碼。 – 2010-04-14 21:42:29

回答

0

您需要有一個分層項目的概念。將圖標放在圖像上時,需要將其座標/大小存儲在數組中。如果用戶點擊圖標,則可以根據存儲的座標檢測其位置,然後允許用戶選擇/移動它,根據您的主背景圖像+圖層的分層數組重新繪製圖像。

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。