首页 文章

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

提问于
浏览
0

我有一堆位图,我需要一个在另一个之上 . 我通过相对布局和几个相互叠加的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

    得到它,需要预乘alpha以获得所需的结果 .

相关问题