前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Android 应用开发】Paint 图形组合 Xfermod 之 合成模式表示方法 ( Xfermod 使用步骤 | 透明度 颜色值 公式表示方法 | 老版本表示方法 | 合成区域分块 )

【Android 应用开发】Paint 图形组合 Xfermod 之 合成模式表示方法 ( Xfermod 使用步骤 | 透明度 颜色值 公式表示方法 | 老版本表示方法 | 合成区域分块 )

作者头像
韩曙亮
发布2023-03-27 16:45:00
1.5K0
发布2023-03-27 16:45:00
举报
文章被收录于专栏:韩曙亮的移动开发专栏

文章目录

Xfermod 使用步骤

Xfermod 使用步骤 :

① 创建画笔 : 注意 , 绘制 源图像 和 目标图像 , 以及设置 Xfermod 图形组合模式 , 使用的都是这个画笔 ;

代码语言:javascript
复制
 //创建画笔
 Paint paint = new Paint();

② 绘制 目标图像 ( Destination Image ) : 先绘制的是目标图像 , 设置 Xfermod 图形组合模式后 , 绘制的是源图像 ;

代码语言:javascript
复制
 //绘制目标图像 ( Destination Image )
 canvas.drawBitmap(destinationImage, 0, 0, paint);

③ 设置 Xfermod 图形组合模式 : 设置 18 种 Xfermod 模式之一 , 创建 PorterDuffXfermode 对象 ( 传入模式对应的常量 ) , 将 Xfermod 对象设置给画笔 Paint 对象 ;

代码语言:javascript
复制
 PorterDuff.Mode mode = // choose a mode
 paint.setXfermode(new PorterDuffXfermode(mode));

④ 绘制 目标图像 ( SourceImage ) : 先绘制的是目标图像 , 设置 Xfermod 图形组合模式后 , 绘制的是源图像 ;

代码语言:javascript
复制
 //绘制 源图像 ( SourceImage ) 
 canvas.drawBitmap(sourceImage, 0, 0, paint);

⑤ 代码总结 : 使用 Xfermod 的四个步骤 :

代码语言:javascript
复制
 // 1.创建画笔
 Paint paint = new Paint();
 // 2.绘制目标图像
 canvas.drawBitmap(destinationImage, 0, 0, paint);

 // 3.设置 Xfermod 图形组合模式
 PorterDuff.Mode mode = // choose a mode
 paint.setXfermode(new PorterDuffXfermode(mode));

 // 4.绘制 源图像 ( SourceImage ) 
 canvas.drawBitmap(sourceImage, 0, 0, paint);

合成方程 ( Compositing equations )

合成对象 :

  • 1.目标图像 ( Destination Image ) : 先绘制 的图像 是目标图像 ;
在这里插入图片描述
在这里插入图片描述
  • 2.源图像 ( Source Image ) : 设置 Xfermod 之后 , 后绘制的图像 是 源图像 ;
在这里插入图片描述
在这里插入图片描述

方程中的相关变量说明 :

  • 1.目标图像相关 :
    • ① 目标图像 指定像素位置 的透明度 :
    \alpha_{dst}

    ;

    • ② 目标图像 指定像素位置 的颜色值 :
    C_{dst}

    ;

  • 2.源图像相关 :
    • ① 源图像 指定像素位置 的透明度 :
    \alpha_{src}

    ;

    • ② 源图像 指定像素位置 的颜色值 :
    C_{src}

    ;

  • 3.合成结果相关 :
    • ① 合成后 指定像素位置 的透明度 :
    \alpha_{out}

    ;

    • ② 合成后 指定像素位置 的颜色值 :
    C_{out}

    ;

合成方程 :

  • 1.方程来源 : 每一个独立的 透明度合成模式 或者 混合合成模式 都 提供了对应的方程 ;
  • 2.方程作用 : 这些方程用于计算 源图像 与 目标图像 合成结果的 对应像素点的 透明度 和 颜色值 ;

老版本的表示方法

老版本的表示方法 :

  • 1.目标图像相关 :
[D_a , D_c]

, 表示该目标图像的透明度和颜色值属性 ;

  • ① 目标图像 指定像素位置 的透明度 :
D_a

;

  • ② 目标图像 指定像素位置 的颜色值 :
D_c

;

  • 2.源图像相关 :
[S_a , S_c]

, 表示该源图像的透明度和颜色值属性 ;

  • ① 源图像 指定像素位置 的透明度 :
S_a

;

  • ② 源图像 指定像素位置 的颜色值 :
S_c

;

  • 3.合成结果相关 :
[R_a , R_c]

, 表示该合成结果图像的透明度和颜色值属性 ;

  • ① 合成后 指定像素位置 的透明度 :
R_a

;

  • ② 合成后 指定像素位置 的颜色值 :
R_c

;


合成模式 相关 区域

合成区域描述 :

  • ① 集合
S

表示 源图像素 不透明区域 ;

  • ② 集合
D

表示目标图像像素 不透明区域 ;

  • ③ 集合
R

表示绘制结果的不透明区域 ;

  • ④ 集合
A

代表全集所有区域 ( 整个框透明 + 不透明所有区域 ) ;

  • ⑤ 集合
S \cap D

表示 源图像 与 目标图像 不透明区域的交集 ;

  • ⑥ 集合
S \cup D

表示 源图像 与 目标图像 不透明区域的并集 ;

之后的每个模式都要分析上述某几个区域的 透明度 和 颜色值 ;

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-05-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章目录
    • Xfermod 使用步骤
      • 合成方程 ( Compositing equations )
        • 老版本的表示方法
          • 合成模式 相关 区域
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档