我正在做一個模擬器項目,測試幾種基於A *的算法並顯示它們如何工作及其結果。這些算法都是多代理程序,並在網格地圖環境中運行。使用java圖形API繪製圖層
我用了一個JPanel作爲網格,其中包含一個Cell的二維數組,其中每個Cell都是一個自定義類,它擴展了Component類,並使用paint方法在每個單元格內繪製我需要的東西。 對於單元格內部的繪圖,我使用諸如Graphics.fillRect或Graphics.drawImage之類的方法來填充每個單元格的某種顏色或圖標)。
我在網格上爲每個代理的開始位置和目標位置使用了一個特殊的圖標。 我的問題是,我想能夠在同一個單元上繪製多個項目。
例如,我希望能夠通過以特殊顏色沿路徑繪製單元格來顯示其中一個代理的路徑,並且該路徑可能會經過不同代理的起始位置,所以我希望成爲能夠用顏色填充單元格並在頂部繪製圖標。 在另一個例子中,我希望能夠使用alpha混合來混合兩種顏色。
如果我將graphics.fillRect()與一個具有alpha的顏色一起使用,然後使用具有alpha值的不同顏色再次使用它,它將不起作用,因爲最後一個fillRect()將覆蓋第一個調用。
有沒有一種方法可以實現我需要使用與我創建的相同單元格組件或我應該如何實現它不同? 也許有更好的解決這個問題的辦法? 我真的很感謝在這個問題上的任何建議。
對[alpha複合](http://keithp.com/~keithp/porterduff/p253-porter.pdf)有更深的理解可能會有所幫助。此外,如果您接受和/或上調有用答案,人們會更認真地回答您的問題。 – trashgod 2011-05-25 10:05:06
完成,我理解alpha合成,但它不能解決問題。如果你繪製一個帶有50%alpha的矩形,然後繪製另一個矩形,第二個將會覆蓋它而不是混合它 – 2011-05-25 11:37:38