我的目標是讓用戶點擊地圖上的特定位置來添加地標,然後通過單擊其圖標來編輯地標(更改其名稱,移動它,等等)。 我正在使用PictureBox來顯示地圖,並通過註冊MouseDoubleClick事件我正在使用GDI + DrawImage()方法在地圖上繪製圖像。問題是,在繪製地標的圖像之後,它不能編輯:用戶無法單擊圖標並移動它,更改其名稱等。是否還有其他可以遵循的設計模式?也許使用其他控件...?C#:在PictureBox中創建可編輯的對象
0
A
回答
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。
相關問題
- 1. 在Django中創建可編輯的模型對象集管理
- 2. 在django中爲對象創建不可編輯的屬性
- 3. 在Java中創建對象之後編輯對象的方法
- 4. Objective-C中編程對象的創建
- 5. 在C++中創建對象
- 6. 在C++中創建對象
- 7. 如何編輯存在的對象或創建Django中不存在的對象?
- 8. 下對象創建()的編輯()提交不同的對象
- 9. 在C++中創建不可複製但可移動的對象
- 10. 如何在rails 3.2中創建和編輯嵌套對象?
- 11. 在rails中使用模態創建和編輯對象
- 12. 在c文件中創建C++對象
- 13. 如何創建表單來編輯對象及其子對象?
- 14. 使UITextView對象可編輯
- 15. 可能在qt創建器中編輯C++代碼
- 16. 在C#中創建靈活的對象
- 17. 在C#中創建Form2並對其進行編輯
- 18. 在Windows窗體中創建編輯對話框C#
- 19. 創建在C#類對象
- 20. 創建C++對象
- 21. C++:創建對象
- 22. C# - 對象創建
- 23. C#編輯對象在asp.net-MVC
- 24. C#:創建一個PictureBox的堆棧
- 25. 創建對對象C++
- 26. 如何在C++中創建可迭代的對象列表?
- 27. 創建對象 - Objective-C的
- 28. 在C++中動態創建對象?
- 29. 在C++中創建一個iostream對象
- 30. C++在方法中創建新對象
你失去了我的「它不可編輯」。編輯任何東西都需要代碼。 – 2010-04-14 21:42:29