參考
PorterDuff.Mode
PorterDuff.Mode 是用來指定兩個圖像共同繪制時的顏色策略的。
它是一個 enum,不同的 Mode 可以指定不同的策略
效果示例
PorterDuff.Mode.DST_OUT
image.png
PorterDuff.Mode.DST_IN
image.png
Mode詳述
PorterDuff.Mode 一共有 17 個,可以分為兩類
- Alpha 合成 (Alpha Compositing)
- 混合 (Blending)
Alpha 合成
「PorterDuff」 并不是一個具有實際意義的詞組,而是兩個人的名字(準確講是姓)。這兩個人當年共同發表了一篇論文,描述了 12 種將兩個圖像共同繪制的操作(即算法)。而這篇論文所論述的操作,都是關于 Alpha 通道(也就是我們通俗理解的「透明度」)的計算的,后來人們就把這類計算稱為Alpha 合成 ( Alpha Compositing ) 。
效果直接盜 Google 的官方文檔了。
源圖像和目標圖像:
image.png
Alpha 合成:
image.png
Blending 混合
是 Photoshop 等制圖軟件里都有的那些混合模式(multiply darken lighten 之類的)。
這一類操作的是顏色本身而不是 Alpha 通道,并不屬于 Alpha 合成,所以和 Porter 與 Duff 這兩個人也沒什么關系,不過為了使用的方便,它們同樣也被 Google 加進了 PorterDuff.Mode 里。
效果依然盜 官方文檔。
image.png
結論
對于 Alpha 合成類的操作,掌握他們,并在實際開發中靈活運用;而對于混合類的,你只要把它們的名字記住就好了,這樣當某一天設計師告訴你「我要做這種混合效果」的時候,你可以馬上知道自己能不能做,怎么做。
另外:PorterDuff.Mode 建議你動手用一下試試,對加深理解有幫助。