2010-09-30 29 views
1

我想寫一個簡單的程序,當點擊圖像時,我可以在圖像頂部疊加一個點。我可以將X和Y數據保存回我的數據庫,但之後我希望能夠在稍後的日期再次調用該信息,並通過代碼再次覆蓋這些點,這與用戶第一次單擊圖像時不同。在點擊圖像上疊加一個'點'

我得到了儘可能多的捕獲點擊的X和Y沒有問題,但我無法找到特別爲我正在嘗試做的示例。所有在線示例似乎都是用於添加圖形來保存圖像,但我不需要這樣做,因爲它每次都會有相同的圖像。

一旦我可以做到這一點,我還需要找出一種方法,我可以檢測到圖像的哪個區域被點擊。我需要標記的區域在形狀和大小上有所不同,所以我需要嘗試找出一種方法來「映射」這些區域,然後與用戶點擊的座標進行交叉參考(我假設我可能需要做一些聰明的幾何的東西呢?)

如果任何人有任何建議什麼科目/類/方法等研究任何一個我的查詢,我將非常感激。

在此先感謝

回答

1

您可以使用System.Drawing命名空間來實現此目的。

創建一個控件並覆蓋OnPaint和OnPaintBackground。存儲您點擊一個列表

  • OnPaintBackground,畫出使用被傳遞給你作爲一個參數的圖形對象使用DrawImageUnscaled圖像。

  • OnPaint中,循環遍歷你的點數組,並調用graphics.FillElipse或類似的方法畫出一個點。

因爲這不是一個保留模式的圖形系統,你需要不斷繪製這些項目,所以這可能不適合大量的點。在這種情況下,您可以使用graphics.FromImage創建內存位圖並獲取圖形繪製對象。

+0

嗨,詹姆斯,感謝您的快速回復!我知道我必須走下這個系統。拉動路線,但我不熟悉'創建控制並覆蓋它' - 請你再解釋一下嗎?另外 - 我假設我會使用圖片框來顯示圖片?我的所有代碼都需要坐在/從哪裏開始 - 一個picturebox事件?對不起 - 我不是一個完整的新手,但我從來沒有用這種方式在C#中處理圖像。 – 2010-09-30 14:56:11

+0

我們正在做的是基本上用一些附加功能編寫一個picturebox控件。除非您想使用滾動,否則最好從Control直接繼承。以下內容會幫助您開始:http://ondotnet.com/pub/a/dotnet/2002/03/18/customcontrols.html – 2010-09-30 16:59:33