日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

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

發布時間:2025/6/17 Android 35 豆豆

文章目錄

        • 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 使用步骤 | 透明度 颜色值 公式表示方法 | 老版本表示方法 | 合成区域分块 )的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。