这一篇学习Paint的图层混合模式,即mPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN));
PorterDuff.Mode 中提供了18中混合模式
CLEAR (0),
SRC (1),
DST (2),
/**注释1
* <p>
* <img src="{@docRoot}reference/android/images/graphics/composite_SRC_OVER.png" />
* <figcaption>The source pixels are drawn over the destination pixels.</figcaption>
* </p>
* <p>\(\alpha_{out} = \alpha_{src} + (1 - \alpha_{src}) * \alpha_{dst}\)</p>
* <p>\(C_{out} = C_{src} + (1 - \alpha_{src}) * C_{dst}\)</p>
*/
SRC_OVER (3),
DST_OVER (4),
SRC_IN (5),
DST_IN (6),
SRC_OUT (7),
DST_OUT (8),
SRC_ATOP (9),
DST_ATOP (10),
XOR (11),
DARKEN (16),
LIGHTEN (17),
MULTIPLY (13),
SCREEN (14),
ADD (12),
OVERLAY (15);
以SRC_OVER为例,它的计算规则是这样的(见注释1):
alpha通道值=原图像的alpha值+(1-原图像的alpha值)*目标图像的alpha值
C 颜色通道值 = 原图像的颜色C值+(1-原图像的颜色C值)*目标图像的颜色C值
那么这18种模式是如何进行混合的呢,这里有两点点需要注意,就是src源图像的区域以及dst目标图像的区域,图层混合模式是作用在两者相交的区域,图层混合模式的效果是作用于src源图像的区域,
PorterDuff.Mode.CLEAR 所绘制的图形不会提交到画布上
PorterDuff.Mo