半透明位图叠加呈现错误的颜色

时间:2015-06-25 00:10:22

标签: android colors bitmap

我有一堆位图,我需要将它们渲染到另一个上面。我通过相对布局和相互叠加的几个ImageView实现了这一点,它们都分配了一个Bitmap。

这很好用,但是当顶层是半透明的时,下位图的颜色是关闭的。

我的所有位图都使用Config.ARGB_8888

假设顶层为红色,alpha为50%,底层为绿色,alpha为100%。

我可以将位图的颜色设置为红色,然后将ImageView的alpha设置为0.5f,它会将绿色渲染到精细以下(深绿色,并混入一些红色)。

如果我将位图像素设置为50%红色,如下所示:bmp.eraseColor(0x7Fff0000);并将imageView alpha保留为100%,则下面的绿色将显示为黄色,混合红色和绿色,而不是覆盖它。

不幸的是我无法使用(工作)拳头版本,因为上面位图上的alpha不会是统一的。

在Bitmap中使用半透明像素时,是否存在混合模式设置以使用真彩色?

编辑:我还尝试将几个PorterDuffXfermodes设置为ImageViews但没有一个给出正确的结果。

Paint paint = new Paint();
paint.setXfermode(new PorterDuffXfermode(Mode.MULTIPLY)); //OVERLAY//ADD//SCREEN//DARKEN//LIGHTEN
imageView.setLayerType(View.LAYER_TYPE_SOFTWARE, paint);

1 个答案:

答案 0 :(得分:0)

知道了,需要预先计算alpha以获得所需的结果。