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完成了你的预测。 –