将多个图像组合成单个图像,以便以后绘制,使用Alpha混合

时间:2009-08-03 18:48:19

标签: java graphics alphablending

我有一个Java图形系统,通过指定多个图像,允许对象“挂墙”,这些图像可以应用(相对)复杂的对齐和调整大小选项。

为了充分发挥作用(尤其是在非常低功率的设备上),我首先绘制壁纸时将图像绘制到内部图像,然后将该合成图像复制到目标图形上下文以使其进入屏幕。然后,只有在调整对象大小时才重新创建复合,因此后续重绘的唯一工作是将剪切区域从复合复制到目标图形上下文。

解决方案效果非常好,除了当我使用具有alpha通道透明度的PNG图像时,在绘制复合材料时alpha通道会丢失 - 即复合材料的所有像素都完全不透明。因此,随后复制到屏幕上的图形上下文无法允许壁纸对象后面显示的内容。

我确实设法使用RGBImageFilter来过滤掉完全透明的像素,但是我看不到解决这个问题的方法来使混合透明度工作。

有没有人知道我可以用alpha通道完整地绘制图像的方法,如果两个alpha值的像素重叠,它们会合并吗?

1 个答案:

答案 0 :(得分:3)

您对合成图像使用什么类型的图像?

您应该使用BufferedImage并将其类型设置为TYPE_INT_ARGB,以允许半透明。