第一次翻譯文章绣檬,不當(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)圖像
下面代碼展示了用于生成每個圖像的繪制順序:
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 合成模式
混合模式
合成方程
以下每個單獨(dú)的 alpha 合成或混合模式的文檔提供了計(jì)算原圖像和目標(biāo)圖像合成之后的 alpha 值和顏色值的精確方程于樟。
alpha 的結(jié)果(輸出值)記為顏色的結(jié)果(輸出值)記為
概要
- PorterDuff.Mode
ADD
-
PorterDuff.Mode
CLEAR
-
PorterDuff.Mode
DARKEN
-
PortDuff.Mode
DST
-
PortDuff.Mode
DST_ATOP
-
PortDuff.Mode
DST_IN
-
PortDuff.Mode
DST_OUT
-
PortDuff.Mode
DST_OVER
-
PortDuff.Mode
LIGHTEN
-
PortDuff.Mode
MULTIPLY
-
PortDuff.Mode
OVERLAY
-
PortDuff.Mode
SCREEN
-
PortDuff.Mode
SRC
-
PortDuff.Mode
SRC_ATOP
-
PortDuff.Mode
SRC_IN
-
PortDuff.Mode
SRC_OUT
-
PortDuff.Mode
SRC_OVER
-
PortDuff.Mode
XOR
總結(jié)
其實(shí)整篇下來传黄,也沒有幾個英文單詞杰扫,就是一直粘圖。不過算是一個好的開始膘掰,因?yàn)楣ぷ髦猩婕暗竭@方面的內(nèi)容章姓,算是鞏固總結(jié)啦。順便安利一下這篇個人覺得不錯的文章各個擊破搞明白PorterDuff.Mode