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我只顯示圖像在他們的破碎狀態,當時我混淆了另一個方法導致沒有任何變化。
它只能在mouseAnimation函數中出現問題。正如你所說的,Java只使用指針,所以賦予函數的圖像是相同的。 – FiReTiTi
從視頻中,您似乎將'Color.white'傳遞給'DrawAbsolute'方法,並將此'Color'傳遞給帶有'Color'參數的'drawImage'方法之一。這種方法正是你不想要的。它用您通過的顏色代替阿爾法... – haraldK
@haraldK感謝您的評論。我一直認爲參數是用於彩色化,基本上白色是保持原有的顏色。我試過 新顏色(256,256,256,0) 但無濟於事。不過,我會繼續追求這條道路。改變顏色.cyan完成了你的預測。 –