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

歡迎訪問 生活随笔!

生活随笔

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

Android

Android 颜色渲染(九) PorterDuff及Xfermode详解

發布時間:2023/12/10 Android 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android 颜色渲染(九) PorterDuff及Xfermode详解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Android 顏色渲染(九)? PorterDuff及Xfermode詳解

??? 之前已經講過了除ComposeShader之外Shader的全部子類, 在講ComposeShader(組合渲染)之前,? 由于構造ComposeShader需要 PorterDuffXfermode或者PorterDuff.Mode作為參數,所以在此先詳細地了解下這兩個類的作用,這對之后的繪圖會有很大的幫助:

?

在講具體的使用之前補充一點知識,這就是 ProterDuff的由來:

相信大多數人看到這個ProterDuff單詞很奇怪了吧,這腫么個意思呢,然后就用有道啊,金山啊開始翻譯,但是翻譯軟件給出的結果肯定還是? ProterDuff或者"未找到".

這是神馬情況呢?因為ProterDuff是兩個人名的組合: Tomas Proter和 Tom Duff. 他們是最早在SIGGRAPH上提出圖形混合概念的大神級人物.有興趣的童靴們可以自己查下并深入了解,在此不再做過多描述.

?

?? 利用ProterBuff.Mode我們可以完成任意2D圖像測操作, 比如涂鴉畫板應用中的橡皮擦效果,繪制各種自定義的進度,等等很強大的效果,下面請看具體的介紹:

??? 1.? Xfermode:

?

??

Xfermode有三個子類 :

?

AvoidXfermode??指定了一個顏色和容差,強制Paint避免在它上面繪圖(或者只在它上面繪圖)。

PixelXorXfermode??當覆蓋已有的顏色時,應用一個簡單的像素異或操作。

PorterDuffXfermode? 這是一個非常強大的轉換模式,使用它,可以使用圖像合成的16條Porter-Duff規則的任意一條來控制Paint如何與已有的Canvas圖像進行交互。

要應用轉換模式,可以使用setXferMode方法,如下所示:

?

[java]?view plaincopy
  • AvoidXfermode?avoid?=?new?AvoidXfermode(Color.BLUE,?10,?AvoidXfermode.Mode.?AVOID);????borderPen.setXfermode(avoid);??

  • 2.PorterDuff:

    ?

    ?

    ?

    首先看一下效果圖(來自ApiDemos/Graphics/XferModes)

    ???????????????????????????????????????????????????????????????????????????????????

    ?

    ?

    從上面我們可以看到PorterDuff.Mode為枚舉類,一共有16個枚舉值:

    ?

    1.PorterDuff.Mode.CLEAR??

    ? 所繪制不會提交到畫布上。
    2.PorterDuff.Mode.SRC

    ?? 顯示上層繪制圖片
    3.PorterDuff.Mode.DST

    ??顯示下層繪制圖片
    4.PorterDuff.Mode.SRC_OVER

    ??正常繪制顯示,上下層繪制疊蓋。
    5.PorterDuff.Mode.DST_OVER

    ??上下層都顯示。下層居上顯示。
    6.PorterDuff.Mode.SRC_IN

    ?? 取兩層繪制交集。顯示上層。
    7.PorterDuff.Mode.DST_IN

    ??取兩層繪制交集。顯示下層。
    8.PorterDuff.Mode.SRC_OUT

    ?取上層繪制非交集部分。
    9.PorterDuff.Mode.DST_OUT

    ?取下層繪制非交集部分。
    10.PorterDuff.Mode.SRC_ATOP

    ?取下層非交集部分與上層交集部分
    11.PorterDuff.Mode.DST_ATOP

    ?取上層非交集部分與下層交集部分
    12.PorterDuff.Mode.XOR

    ? 異或:去除兩圖層交集部分
    13.PorterDuff.Mode.DARKEN

    ? 取兩圖層全部區域,交集部分顏色加深
    14.PorterDuff.Mode.LIGHTEN

    ??取兩圖層全部,點亮交集部分顏色
    15.PorterDuff.Mode.MULTIPLY

    ? 取兩圖層交集部分疊加后顏色
    16.PorterDuff.Mode.SCREEN

    ? 取兩圖層全部區域,交集部分變為透明色

    ?

    轉載于:https://www.cnblogs.com/caixuejian/p/4037075.html

    總結

    以上是生活随笔為你收集整理的Android 颜色渲染(九) PorterDuff及Xfermode详解的全部內容,希望文章能夠幫你解決所遇到的問題。

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