2016-11-19 71 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改为该颜色。