2012-09-10 68 views
1

使用Graphics類和麪板,我可以在窗體上繪製幾何圖形。我明白我不能將事件應用於此形狀(如點擊,拖動等)。創建可移動的幾何對象

我怎樣才能創建一個幾何形狀(也許使用點),我可以應用事件,例如允許通過拖放移動形狀?

+0

爲什麼關閉不是真正的問題?例如, –

+0

例如,「應用事件」和「分開移動」是什麼意思?我只是不明白。 PictureBox和所有這些有什麼關係?所有這些你講的東西大多是無關的。 – quetzalcoatl

+0

我會編輯它。 –

回答

2

如果您將事件處理程序直接附加到要繪製這些形狀的Panel上,則可以使用它們來確定用戶將鼠標懸停在哪裏,單擊它們的位置,拖動的位置等。您可以確定如果用戶點擊點的頂點(可能允許它們改變形狀),或者在定義多邊形的一組點中(可能允許它們移動它)。然後,您可以根據用戶的鼠標「手勢」對定義該形狀的點陣進行必要的更改,然後用它在下一個窗口Paint()上重繪形狀。作爲「我怎樣才能知道哪個形狀被點擊」的簡潔答案,實現「點多邊形」測試;給定一組點定義一個多邊形M和一個點P,這個點可能在或不在M的內部,找到一個保證位於你想測試的形狀之外的點Q,在P和Q之間畫出一條假想的線PQ,許多PQ穿過的線段。如果這個數字是奇數,P就位於M.

+0

1.我如何計算PQ穿越的M線段? 2.我沒有該形狀的點陣,形狀被繪製並且其點將被刪除,剩下的只是繪製的形狀。 –

+0

然後不要刪除點。保留它們並在將來調用Paint事件處理函數時使用它們繪製形狀。至於確定兩條線段是否交叉,這是一個數學問題,並且已經在Math.SE這裏和數次回答了很多次。 – KeithS