2017-11-04 314 views
0

我想使用swing製作一個繪畫程序。我有幾個用戶可以繪製的形狀,包括橢圓,線條和矩形。這些形狀可以繪製(使用graphics2d)與各種筆觸(線條粗細),可以填充或未填充。Swing paint program - 如何處理選擇?

我試圖實現一個功能,使用戶可以用鼠標右鍵單擊一個形狀並拖動它來移動它。

我目前的策略是輪詢形狀的數組是倒序(意味着在多個形狀的情況下,最近添加的形狀被選中)。

每個形狀實現都有一個名爲isSelected(int x, int y)的方法。我需要弄清楚如何確定一個點是否落在形狀上。其中一個挑戰是,在內部點擊時不應選擇橢圓形等未填充的形狀,但應在填充後選擇它。另外,選擇應該響應中風的厚度。也就是說,如果線條使用較粗的線條而不是線條的中心,則應通過點擊外部線條來選擇線條。

我到底該如何去實施?

+0

什麼的問題取決於「如何」你存儲的形狀。 Java的圖形2d API支持「Shape」的概念,並具有許多預定義的形狀。這些包含確定給定點是否落入其邊界的能力 – MadProgrammer

+0

我正在存儲一個自定義類型的數組,該API實現了一個2D形狀 – Airhead

回答

1

我存儲從這個API實現了2D形狀的自定義類型的數組

然後可以使用:

根據你的信息,你要檢查

+0

這適用,但不處理填充/未填充形狀的邏輯。 – Airhead

+0

你是什麼意思?由於我沒有關於如何實際執行任何內容的背景知識,因此很難提出進一步的建議 – MadProgrammer

+0

@Airhead MadProgrammer建議的內容應該能夠處理填充和未填充的形狀。你測試過了嗎? – user3437460