(譯)PorterDuff.Mode

第一次翻譯文章绣檬,不當(dāng)之處請多指教绞蹦。原文鏈接

類繼承結(jié)構(gòu)

public static final enum PorterDuff.Mode
        extends Enum<PorterDuff.Mode>
java.lang.Object
   ?    java.lang.Enum<android.graphics.PorterDuff.Mode>
   ?    android.graphics.PorterDuff.Mode

Porter-Duff

Porter-Duff 這個類名是為了表達(dá)對 Thomas Porter 和 Tom Duff 的敬意懊纳,他們于 1984 年發(fā)表了一篇名為 “Compositing Digital Images”(合成數(shù)字圖像)的開創(chuàng)性論文嘀倒。在這篇文章中页藻,兩位作者描述了12種合成操作符软免,具體來說就是當(dāng)我們把原圖像繪制到目標(biāo)圖像處時應(yīng)該如何計(jì)算二者結(jié)合后的顏色周循。

“Compositing Digital Images”(合成數(shù)字圖像)于1984 年 7 月 發(fā)表在計(jì)算機(jī)圖形期刊第18期强法,第3頁。

由于 Porter 和 Duff 的工作只關(guān)注原圖像和目標(biāo)圖像共同繪制對 alpha 通道(即我們所理解的透明度)的影響湾笛,所以我們又把在他們論文所提到的12種操作稱為 alpha 合成模式饮怯。

方便起見,PorterDuff 類中也提供了混合模式嚎研,它們類似于alpha合成模式蓖墅,只不過它們不僅僅是限制在 alpha 通道(RGB可能都有涉及)。Porter 和 Duff 的文章中并沒有涉及到這些混合模式的操作,只不過是為了方便的目的我們才把這些操作包含進(jìn) PorterDuff 這個類中置媳。

圖像

下面所有的圖像示例都是基于相同的原圖像和目標(biāo)圖像

Source image.png
Destination image.png

下面代碼展示了用于生成每個圖像的繪制順序:

Paint paint = new Paint();
canvas.drawBitmap(destinationImage, 0, 0, paint);
PorterDuff.Mode mode = // choose a mode
paint.setXfermode(new PorterDuffXfermode(mode));
canvas.drawBitmap(sourceImage, 0, 0, paint);

Alpha 合成模式

Source.png
Source Over.png
Source In.png
Source Atop.png
Destination.png
Destination Over.png
Destination In.png
Destination Atop.png
Clear.png
Source Out.png
Destination Out.png
Exclusive Or.png

混合模式

Darken.png
Lighten.png
Multiply.png
Screen.png
Overlay.png

合成方程

以下每個單獨(dú)的 alpha 合成或混合模式的文檔提供了計(jì)算原圖像和目標(biāo)圖像合成之后的 alpha 值和顏色值的精確方程于樟。

alpha 的結(jié)果(輸出值)記為

顏色的結(jié)果(輸出值)記為

概要

  • PorterDuff.Mode
    ADD
將源像素添加到目標(biāo)像素并使飽和度疊加
  • PorterDuff.Mode
    CLEAR


    被源像素覆蓋的目標(biāo)像素被清除為0
  • PorterDuff.Mode
    DARKEN


    保留源像素、目標(biāo)像素的較小值
  • PortDuff.Mode
    DST


    丟棄源像素拇囊,保留目標(biāo)像素
  • PortDuff.Mode
    DST_ATOP


    丟棄未被源像素覆蓋的目標(biāo)像素
  • PortDuff.Mode
    DST_IN


    保留覆蓋源像素的目標(biāo)像素迂曲,丟棄剩余的源像素和目標(biāo)像素
  • PortDuff.Mode
    DST_OUT


    保留未被源像素覆蓋的目標(biāo)像素
  • PortDuff.Mode
    DST_OVER


    源像素繪制在目標(biāo)像素后面
  • PortDuff.Mode
    LIGHTEN


    保留源像素、目標(biāo)像素的較小值
  • PortDuff.Mode
    MULTIPLY


    將源像素和目標(biāo)像素進(jìn)行Multiply(正片疊底)
  • PortDuff.Mode
    OVERLAY


    像素是進(jìn)行 Multiply(正片疊底)混合還是 Screen(屏幕)混合寥袭,取決于目標(biāo)顏色
  • PortDuff.Mode
    SCREEN


    將源像素和目標(biāo)像素相加路捧,然后減去乘以目標(biāo)元素的源像素
  • PortDuff.Mode
    SRC


    只保留源像素
  • PortDuff.Mode
    SRC_ATOP


    丟棄未覆蓋目標(biāo)像素的源像素
  • PortDuff.Mode
    SRC_IN


    保持覆蓋目標(biāo)像素的源像素,丟棄剩余的源像素和目標(biāo)像素
  • PortDuff.Mode
    SRC_OUT


    只保留不包含目標(biāo)像素的源像素
  • PortDuff.Mode
    SRC_OVER


    源像素繪制在目標(biāo)像素上
  • PortDuff.Mode
    XOR


    丟棄源像素覆蓋目標(biāo)像素的源像素和目標(biāo)像素
    CodeCogsEqn (35).png

總結(jié)

其實(shí)整篇下來传黄,也沒有幾個英文單詞杰扫,就是一直粘圖。不過算是一個好的開始膘掰,因?yàn)楣ぷ髦猩婕暗竭@方面的內(nèi)容章姓,算是鞏固總結(jié)啦。順便安利一下這篇個人覺得不錯的文章各個擊破搞明白PorterDuff.Mode

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末识埋,一起剝皮案震驚了整個濱河市凡伊,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌窒舟,老刑警劉巖系忙,帶你破解...
    沈念sama閱讀 212,222評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異惠豺,居然都是意外死亡银还,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,455評論 3 385
  • 文/潘曉璐 我一進(jìn)店門洁墙,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蛹疯,“玉大人,你說我怎么就攤上這事热监∞嘞遥” “怎么了?”我有些...
    開封第一講書人閱讀 157,720評論 0 348
  • 文/不壞的土叔 我叫張陵狼纬,是天一觀的道長。 經(jīng)常有香客問我骂际,道長疗琉,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,568評論 1 284
  • 正文 為了忘掉前任歉铝,我火速辦了婚禮盈简,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己柠贤,他們只是感情好香浩,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,696評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著臼勉,像睡著了一般邻吭。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上宴霸,一...
    開封第一講書人閱讀 49,879評論 1 290
  • 那天囱晴,我揣著相機(jī)與錄音,去河邊找鬼瓢谢。 笑死畸写,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的氓扛。 我是一名探鬼主播枯芬,決...
    沈念sama閱讀 39,028評論 3 409
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼采郎!你這毒婦竟也來了千所?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,773評論 0 268
  • 序言:老撾萬榮一對情侶失蹤尉剩,失蹤者是張志新(化名)和其女友劉穎真慢,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體理茎,經(jīng)...
    沈念sama閱讀 44,220評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡黑界,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,550評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了皂林。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片朗鸠。...
    茶點(diǎn)故事閱讀 38,697評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖础倍,靈堂內(nèi)的尸體忽然破棺而出烛占,到底是詐尸還是另有隱情,我是刑警寧澤沟启,帶...
    沈念sama閱讀 34,360評論 4 332
  • 正文 年R本政府宣布忆家,位于F島的核電站,受9級特大地震影響德迹,放射性物質(zhì)發(fā)生泄漏芽卿。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,002評論 3 315
  • 文/蒙蒙 一胳搞、第九天 我趴在偏房一處隱蔽的房頂上張望卸例。 院中可真熱鬧称杨,春花似錦、人聲如沸筷转。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,782評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽呜舒。三九已至锭汛,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間阴绢,已是汗流浹背店乐。 一陣腳步聲響...
    開封第一講書人閱讀 32,010評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留呻袭,地道東北人眨八。 一個月前我還...
    沈念sama閱讀 46,433評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像左电,于是被迫代替她去往敵國和親廉侧。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,587評論 2 350

推薦閱讀更多精彩內(nèi)容