2016-11-19 75 views
0

我遇到了一個問題,即作爲緩衝圖像加載的圖像正確包含其Alpha通道。但是,當作爲參數傳遞時,alpha通道會丟失。BufferedImage在作爲參數傳遞時丟失了alpha值

我加載圖像是這樣的:

MousePointer = ImageIO.read(getClass().getResourceAsStream("sprites/Mouse-sheet.png")); 

然後我得出這樣的(alpha通道保持完好):

g.drawImage(Sprites.MousePointer, mouse.x, mouse.y, 64, 64, null); 

但是當我畫用自己的功能,阿爾法通道丟失:

mouseAnimation.DrawAbsolute(Sprites.MousePointer, g, mouse.x, mouse.y, 4, 4, deltaTime); 

爲什麼alpha通道丟失,java變量是指針,從而通過 - 通過參考,所以它沒有任何意義?我能做些什麼來防止它?

你可以在這裏看到結果:YouTube video我只顯示圖像在他們的破碎狀態,當時我混淆了另一個方法導致沒有任何變化。

+1

它只能在mouseAnimation函數中出現問題。正如你所說的,Java只使用指針,所以賦予函數的圖像是相同的。 – FiReTiTi

+1

從視頻中,您似乎將'Color.white'傳遞給'DrawAbsolute'方法,並將此'Color'傳遞給帶有'Color'參數的'drawImage'方法之一。這種方法正是你不想要的。它用您通過的顏色代替阿爾法... – haraldK

+0

@haraldK感謝您的評論。我一直認爲參數是用於彩色化,基本上白色是保持原有的顏色。我試過 新顏色(256,256,256,0) 但無濟於事。不過,我會繼續追求這條道路。改變顏色.cyan完成了你的預測。 –

回答

0

對於任何有此問題的人來說(來自一種語言,你總是被要求像我一樣繪畫時提供顏色),我能夠通過一個簡單的改變來修復它。我剛剛刪除了顏色參數。

像@haraldK指出的那樣,與其他語言不同,該顏色不是用於圖像的彩色化,而是將所有alpha改爲該顏色。