2009-12-09 39 views
0

繪製完一條直線,矩形,橢圓後,我想單擊一個形狀並用鼠標移動事件來移動它。我怎樣才能得到哪個對象被選中?C#CF拖動圖像對象

+0

我認爲你的意思是「橢圓」。 Eclipse是一個開源的IDE。 :) – 2009-12-09 06:34:06

+0

剛剛修好。謝謝Andy – Thyphuong 2009-12-09 07:29:20

回答

1

你可以存儲你畫作爲GraphicsPaths形狀,通過他們的MouseMove迭代,並使用ISVISIBLE(點),以確定當前鼠標的位置是一個形狀的邊界內。

+0

好的建議。這是比我推薦的更優雅的解決方案。感謝讓我意識到GraphicsPath。 – 2009-12-09 07:23:57

+0

但是我繪製的所有形狀都與Graphics.draw(drawrectangle,drawline等...)那麼我怎樣才能使用GraphicsPath? – Thyphuong 2009-12-09 07:31:07

+0

@Thyphuong:您可以創建新的GraphicsPath對象,並使用AddRectangle方法您的矩形轉換成的GraphicsPath。每種形狀都有添加方法,所以你應該能夠轉換你繪製的任何東西。 @Andy West:謝謝,不客氣。 – 2009-12-09 07:58:30

0

您需要執行遏制測試以查看您單擊的點是否在任何形狀內。例如,對於一個點是一個圈子裏面,以下必須爲真:

Math.Pow(x - centerX, 2) + Math.Pow(y - centerY, 2) <= Math.Pow(radius, 2) 

你也應該實現某種Z-order(分層)。獲得包含您的點的所有形狀的列表後,選擇Z軸頂部的那個,這是您選擇的形狀。

+0

感謝您的回覆。所以你的意思是我們可以通過協調來獲得形狀,不能將它變成對象並得到它。對? – Thyphuong 2009-12-09 06:55:33

+0

您需要以某種形式自行存儲和維護形狀。如果你正在做GDI +風格的繪畫,你只需要着色像素。 Graphics對象在繪製後不知道形狀。 – 2009-12-09 07:18:39