2013-02-27 26 views
0

我正在製作一個音樂應用程序,該應用程序可讓您從指定顏色中釋放線條,然後軌跡條會在其上傳遞並檢測曲線和顏色根據曲線輸出聲音和修改音調等。檢測Graphics2d在Java繪製應用程序中繪製的線條及其曲線手形

我在找的是幫助檢測線和曲線。它們作爲BUfferedImage繪製在標籤中。以下是截圖:

GUI Of drawing/music aplication

黑線,我畫來表示的TrackBar,但INFACT它會通過drawRect中繪製一個矩形,也可能是一個imagepanel,取決於你檢測線的方式。

我的問題:

  • 我怎麼能檢測出黃,綠等線條和其曲線和處理這些數據?如果我得到這些數據,我可以輕鬆修改每種顏色的每個分配聲音的增益和音高。謝謝!

回答

1

您希望至少存儲用戶繪圖動作的座標。您可以將它們存儲爲點或根據您的要求將它們轉換爲線段和/或曲線的表示形式。當然,存儲筆畫,顏色和任何你想要的作爲這個模型的一部分。

爲了實現這個目標,我認爲阻力最小的路徑可能會讓您利用java.awt.Shape以及java.awt.geom中的所有內容。具體來說,我認爲您會想要將每個用戶繪製的元素表示爲響應用戶繪製動作的一個或多個對象和/或Area對象。然後,讓您的GUI在您的自定義組件上渲染這些模型。

Path2D會將移動存儲爲可通過PathIterator訪問的線和曲線。給定由Rectangle2D表示的跟蹤欄,您可以使用各種可用於比較和組合幾何的方法 - 即此處的Shape界面的intersects(Rectangle2D)。如果幾何模型與軌跡條相交,則可以遍歷路徑組件,直到找到相交的實際子段。這使你獲得當地的坡度。

+0

感謝您的意見。這給了我一個想法,我將如何做到這一點,我會閱讀圖書館,看看我可以到達的地方! – nullwriter 2013-02-27 23:22:18