安卓图形中的PorterDuff.Mode是什么意思?它有什么作用?

158

我想了解在安卓图形中PorterDuff.Mode是什么意思。

我知道它是一种传输模式

我还知道它具有DST_IN、Multiply等属性。


根据我的最新发现,如果你有重叠的图像,并尝试更改其中一个图像的颜色过滤器,它会影响覆盖它的另一张图像! - Jono
2个回答

355

这是一篇由Google工程师撰写的、配有插图的优秀文章:

http://ssp.impulsetrain.com/porterduff.html

PorterDuff被描述为一种将图像组合在一起的方法,就像“不规则形状的纸板”相互叠加,同时还是混合重叠部分的方案。

Android默认的图像合成方式是PorterDuff.Mode.SRC_OVER,它等同于用源图像/颜色覆盖目标图像。换句话说,它会按照源图像的alpha定义的程度,在目标图像(画布)上绘制源图像(正在绘制的图像),并显示出目标图像的内容。

来自文章的PorterDuff信息图

您可以使用下面的键来理解Android文档中用于描述其他模式的代数表达式(请参见该文章以获取更详细的带有类似术语的描述)。

  • Sa 源alpha
  • Sc 源颜色
  • Da 目标alpha
  • Dc 目标颜色

其中alpha是一个值[0..1],颜色会替换每个通道(因此对于红、绿和蓝,需要分别使用该公式)。

结果值以方括号中的一对指定,如下所示。

[<alpha-value>,<color-value>]

其中 alpha-valuecolor-value 是用于生成结果 alpha 通道和每个颜色通道的公式。


5

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接