1 概述
xfermode主要指图像的混合模式,在android中,paint可以设置不同的xfermode来达到不同的效果。 Xfermode有三个子类:AvoidXfermode,PixelXorXfermode,PorterDuffXfermode;
由于前面两个都已经被废弃,并且并不支持硬件加速,所以这里主要讲解PorterDuffXfermode。
2 PorterDuffXfermode
大家可能会奇怪,为什么这种合成模式的名称会叫做PorterDuff。其实这是两个发明人的名字组合而成的,他们是Thomas Porter 和 Tom Duff。
这里的模式有很多种,从谷歌的官方文档中
(http://developer.android.com/reference/android/graphics/PorterDuff.Mode.html),
我们摘抄如下图片:
这里可以看到一共有18种模式,右边有每种模式对应的计算公式
数组中前一个代表alpha,后一个代表color
sa:源图像的alpha(什么是源图像后面讲解)
sc:源图像的color
da:目标图像的alpha(目标图像的意义后面和源图像一起讲解)
dc:目标图像的color
源图像和目标图像的合并就是这里的模式所要控制的,那么我们先来看一段代码,以便理解源图像和目标图像的关系。
canvas.translate(x, y);
ca