[英]C#: Creating an editable object inside a PictureBox
我的目標是讓用戶單擊地圖上的特定位置以添加地標,然后通過單擊其圖標(更改其名稱,四處移動等)來編輯地標。 我正在使用PictureBox來顯示地圖,並且通過注冊MouseDoubleClick事件,我正在使用GDI + DrawImage()方法在地圖上繪制圖像。 問題在於,繪制地標的圖像后,該圖像不可編輯:用戶無法單擊該圖標並四處移動,更改其名稱等。我可以遵循其他設計模式嗎? 也許使用其他控件...?
您可以在屏幕上擁有一個對象列表,其中每個對象都是一個地標。 這些對象至少具有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;
}
}
因此,您可以更改該對象和Invalidate()圖片框的屬性X和Y。
您需要具有分層項目的概念。 將圖標放置在圖像上時,需要將其坐標/大小存儲在數組中。 如果用戶單擊圖標,則可以基於存儲的坐標來檢測其位置,然后允許用戶對其進行選擇/移動,並根據您的主要背景圖像+分層的圖標陣列重新繪制圖像。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.