欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 运维知识 > Android >内容正文

Android

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

发布时间:2025/6/17 Android 60 豆豆

文章目录

        • Xfermod 使用步骤
        • 合成方程 ( Compositing equations )
        • 老版本的表示方法
        • 合成模式 相关 区域



Xfermod 使用步骤


Xfermod 使用步骤 :


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

//创建画笔Paint paint = new Paint();

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

//绘制目标图像 ( Destination Image )canvas.drawBitmap(destinationImage, 0, 0, paint);

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

PorterDuff.Mode mode = // choose a modepaint.setXfermode(new PorterDuffXfermode(mode));

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

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

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

// 1.创建画笔Paint paint = new Paint();// 2.绘制目标图像canvas.drawBitmap(destinationImage, 0, 0, paint);// 3.设置 Xfermod 图形组合模式PorterDuff.Mode mode = // choose a modepaint.setXfermode(new PorterDuffXfermode(mode));// 4.绘制 源图像 ( SourceImage ) canvas.drawBitmap(sourceImage, 0, 0, paint);


合成方程 ( Compositing equations )


合成对象 :

  • 1.目标图像 ( Destination Image ) : 先绘制 的图像 是目标图像 ;
  • 2.源图像 ( Source Image ) : 设置 Xfermod 之后 , 后绘制的图像 是 源图像 ;

方程中的相关变量说明 :

  • 1.目标图像相关 :
    • ① 目标图像 指定像素位置 的透明度 : αdst\alpha_{dst}αdst ;
    • ② 目标图像 指定像素位置 的颜色值 : CdstC_{dst}Cdst ;
  • 2.源图像相关 :
    • ① 源图像 指定像素位置 的透明度 : αsrc\alpha_{src}αsrc ;
    • ② 源图像 指定像素位置 的颜色值 : CsrcC_{src}Csrc ;
  • 3.合成结果相关 :
    • ① 合成后 指定像素位置 的透明度 : αout\alpha_{out}αout ;
    • ② 合成后 指定像素位置 的颜色值 : CoutC_{out}Cout ;

合成方程 :

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



老版本的表示方法


老版本的表示方法 :

  • 1.目标图像相关 : [Da,Dc][D_a , D_c][Da,Dc] , 表示该目标图像的透明度和颜色值属性 ;
    • ① 目标图像 指定像素位置 的透明度 : DaD_aDa ;
    • ② 目标图像 指定像素位置 的颜色值 : DcD_cDc ;
  • 2.源图像相关 : [Sa,Sc][S_a , S_c][Sa,Sc] , 表示该源图像的透明度和颜色值属性 ;
    • ① 源图像 指定像素位置 的透明度 : SaS_aSa ;
    • ② 源图像 指定像素位置 的颜色值 : ScS_cSc ;
  • 3.合成结果相关 : [Ra,Rc][R_a , R_c][Ra,Rc] , 表示该合成结果图像的透明度和颜色值属性 ;
    • ① 合成后 指定像素位置 的透明度 : RaR_aRa ;
    • ② 合成后 指定像素位置 的颜色值 : RcR_cRc ;



合成模式 相关 区域


合成区域描述 :

  • ① 集合 SSS 表示 源图像素 不透明区域 ;
  • ② 集合 DDD 表示目标图像像素 不透明区域 ;
  • ③ 集合 RRR 表示绘制结果的不透明区域 ;
  • ④ 集合 AAA 代表全集所有区域 ( 整个框透明 + 不透明所有区域 ) ;
  • ⑤ 集合 S∩DS \cap DSD 表示 源图像 与 目标图像 不透明区域的交集 ;
  • ⑥ 集合 S∪DS \cup DSD 表示 源图像 与 目标图像 不透明区域的并集 ;

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


总结

以上是生活随笔为你收集整理的【Android 应用开发】Paint 图形组合 Xfermod 之 合成模式表示方法 ( Xfermod 使用步骤 | 透明度 颜色值 公式表示方法 | 老版本表示方法 | 合成区域分块 )的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。