2009-08-03 40 views
3

我有一个Java图形系统,其允许通过指定多个图像,其可以具有物体被“墙纸”(相对)复杂的对准和调整选项施加。多个图像组合成用于以后绘画的单个图像,具有阿尔法混合

为了充分发挥功能(特别是在功耗极低的设备上),我在第一次绘制壁纸时将图像绘制到内部图像上,然后将该复合图像复制到目标图形上下文以使其进入屏幕。仅当对象被调整大小时才会重新创建组合,因此后续重绘的唯一工作是将裁剪区域从组合复制到目标图形上下文。

解决方案的工作真的很好,只是当我有alpha通道透明的PNG图片画的复合材料时,alpha通道丢失 - 这是复合材料具有的所有像素完全不透明。因此,随后复制到屏幕上的图形上下文无法让壁纸对象显示后面的内容。

我还是设法使用RGBImageFilter筛选出完全透明的像素,但我不觉得这有一个解决方案,使混合透明度的工作。

没有人知道的一种方法可以与画图像的α信道保留,并且如果组合的两个像素具有α值重叠?

回答

3

你使用什么类型的图片为合成图像?

您应该使用一个BufferedImage,并设置它的类型来TYPE_INT_ARGB允许透明度。

+0

我刚才使用java.awt.component.createImage()。将研究使用BufferedImage并让你知道它是怎么回事。 – 2009-08-03 19:29:46