我有一堆位图,我需要将它们渲染到另一个上面。我通过相对布局和相互叠加的几个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);
答案 0 :(得分:0)
知道了,需要预先计算alpha以获得所需的结果。