【问题标题】:Semi transparent bitmap overlay renders wrong colour半透明位图叠加呈现错误颜色
【发布时间】:2015-06-25 00:10:22
【问题描述】:

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

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

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

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

我可以将位图的颜色设置为红色,然后将 ImageView 的 alpha 设置为 0.5f,它将呈现低于精细的绿色(较深的绿色和一些红色混合)。

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

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

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

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

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

【问题讨论】:

    标签: android colors bitmap


    【解决方案1】:

    知道了,需要对 alpha 进行预乘才能得到想要的结果。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-08-07
      • 2015-04-21
      • 2018-11-23
      • 2020-11-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-16
      相关资源
      最近更新 更多