【Android 应用开发】Paint 图形组合 Xfermod 之 合成模式表示方法 ( Xfermod 使用步骤 | 透明度 颜色值 公式表示方法 | 老版本表示方法 | 合成区域分块 )
生活随笔
收集整理的這篇文章主要介紹了
【Android 应用开发】Paint 图形组合 Xfermod 之 合成模式表示方法 ( Xfermod 使用步骤 | 透明度 颜色值 公式表示方法 | 老版本表示方法 | 合成区域分块 )
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- 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 DS∩D 表示 源圖像 與 目標圖像 不透明區域的交集 ;
- ⑥ 集合 S∪DS \cup DS∪D 表示 源圖像 與 目標圖像 不透明區域的并集 ;
之后的每個模式都要分析上述某幾個區域的 透明度 和 顏色值 ;
總結
以上是生活随笔為你收集整理的【Android 应用开发】Paint 图形组合 Xfermod 之 合成模式表示方法 ( Xfermod 使用步骤 | 透明度 颜色值 公式表示方法 | 老版本表示方法 | 合成区域分块 )的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Android 应用开发】Paint
- 下一篇: 【C++ 语言】 C 与 C++ 兼容