簡體   English   中英

C#:在PictureBox內創建可編輯對象

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM