2011-07-21 35 views
0

我想在Graphics2D上繪製一個圖形,如果它與某個範圍相交,則將它的一部分着色。我設法通過使用AlphaComposite和AlphaComposite.SRC_IN將2個形狀繪製到BufferedImage(原始形狀和會導致顏色變化的區域)中來實現。問題是,如果畫布滾動,每次調用paint方法時屏幕都會變得遲緩,從而創建緩衝圖像。沒有緩衝圖像的Alphablending

是否有任何方法在不使用緩衝圖像對象的情況下達到相同效果(2個形狀重疊,只有第2個形狀的重疊區域着色)?

乾杯, 最大

回答

1

我不知道我undertand完全你想要做什麼,但你不應該創建緩衝圖像的每個paint方法被調用的時候;只有當對象中的內容改變時才顯示。

+0

好的,讓我再澄清一點。我想要顯示的形狀是一個圖形。圖形填充爲藍色。只要圖形高於某個值,就應該用紅色標出。我想首先繪製圖形,並用一個矩形覆蓋它,該矩形表示圖形填充區域變爲紅色的區域。每次移動滾動條時都調用paint方法。 – Max

+0

我看不出你在評論中說了些什麼,阻止了你實施Maurice的賢哲建議,達不到效果......「緩存'BufferedImage'實例,在需要時更改它們。」 –

+0

爲什麼你不畫一個矩形而不是創建一個bufferedimage? –