SRC 合成模式 :
, 根据方程其值等于
, 这个
值是 源图像对应 第 1 行 第 1 列 像素的透明度值 ;
, 前者
表示 合成结果对应像素透明度 , 后者
表示 合成结果对应像 颜色值 ;
// 1.创建画笔
Paint paint = new Paint();
// 2.绘制目标图像 ( Destination Image ) 先绘制
canvas.drawBitmap(destinationImage, 0, 0, paint);
// 3.设置 Xfermod 图形组合模式
PorterDuff.Mode mode = PorterDuff.Mode.SRC;
paint.setXfermode(new PorterDuffXfermode(mode));
// 4.绘制 源图像 ( Source Image ) 后绘制
canvas.drawBitmap(sourceImage, 0, 0, paint);
合成方程解析 :
1. 合成后的图像描述 : 只绘制 源图像 , 不绘制 目标图像 ;
2. 合成的计算过程 ( 按照区域 和 公式 分析透明度和颜色值 ) :
区域 ( 源图像素 不透明区域 ) : 该区域的 透明度 与 颜色值 与 源图像一样 ;
, 其透明度是源图像的透明度 ;
, 其颜色值是源图像的颜色值 ;
区域 ( 源图像素 透明区域 ) :
区域的补集 ; 该区域的 透明度 与 颜色值 与 源图像一样 ;
为
;
为
;
上面两个区域 的计算公式是一样的 ; 透明度 :
颜色值 :
3. 老版本的合成公式说明 :
, 前者
表示 合成结果对应像素位置的 透明度 是
, 后者
表示 合成结果对应像素位置的颜色值是
;
合成区域描述 : ① 集合
表示 源图像素 不透明区域 ; ② 集合
表示目标图像像素 不透明区域 ; ③ 集合
表示绘制结果的不透明区域 ; ④ 集合
代表全集所有区域 ( 整个框透明 + 不透明所有区域 ) ; ⑤ 集合
表示 源图像 与 目标图像 不透明区域的交集 ; ⑥ 集合
表示 源图像 与 目标图像 不透明区域的并集 ;
SRC 合成模式 :
, 根据方程其值等于
, 这个
值是 源图像对应 第 1 行 第 1 列 像素的透明度值 ;
, 前者
表示 合成结果对应像 透明度 , 后者
表示 合成结果对应像 颜色值 ;
// 1.创建画笔
Paint paint = new Paint();
// 2.绘制目标图像 ( Destination Image ) 先绘制
canvas.drawBitmap(destinationImage, 0, 0, paint);
// 3.设置 Xfermod 图形组合模式
PorterDuff.Mode mode = PorterDuff.Mode.SRC_ATOP;
paint.setXfermode(new PorterDuffXfermode(mode));
// 4.绘制 源图像 ( Source Image ) 后绘制
canvas.drawBitmap(sourceImage, 0, 0, paint);
合成方程解析 :
1. 合成后的图像描述 : 绘制区域 只绘制目标图像不透明的区域 , 源图像与目标图像交集区域 绘制源图像 , 不相交的剩余区域绘制目标图像 ;
2. 合成的计算过程 ( 按照区域 和 公式 分析透明度和颜色值 ) :
Ⅰ.
区域 ( 集合差集运算 : 属于 目标图像不透明区域
, 不属于 源图像不透明区域区域
) :
( 1 ) 透明度计算 : 根据公式
, 其透明度是目标图像的透明度 ;
( 2 ) 颜色值计算 : 根据公式
分析 :
该区域 的 相关变量值 :
分析 :
中 ,
源图像颜色值是
, 因此前半部分计算出来是
;
中 , 源图像的透明度是
, 其计算结果是
;
因此
最终计算结果是
;
Ⅱ .
区域 ( 集合交集运算 : 目标图像不透明区域
, 与 源图像不透明区域
, 的交集 ) :
( 1 ) 透明度计算 : 根据公式
, 其透明度是目标图像的透明度 , 是
;
( 2 ) 颜色值计算 : 根据公式
分析 :
该区域 的 相关变量值 :
分析 :
中 ,
源图像颜色值是
, 因此前半部分计算出来是
;
中 , 源图像的透明度是
, 其计算结果是
;
因此
最终计算结果是
;
上面两个区域 的计算公式是一样的 ; 透明度 :
颜色值 :
合成区域描述 : ① 集合
表示 源图像素 不透明区域 ; ② 集合
表示目标图像像素 不透明区域 ; ③ 集合
表示绘制结果的不透明区域 ; ④ 集合
代表全集所有区域 ( 整个框透明 + 不透明所有区域 ) ; ⑤ 集合
表示 源图像 与 目标图像 不透明区域的交集 ; ⑥ 集合
表示 源图像 与 目标图像 不透明区域的并集 ;