類似于Android原生的PorterDuffXferMode:
以下是Flutter提供的圖像混合模式滚躯,說實(shí)話雏门,好多混合模式結(jié)合官方給出的圖片反而不理解,如果有大神對(duì)這些組合方式有更好的理解掸掏,還望評(píng)論區(qū)賜教W掠啊!阅束!
-
clear:清除所有內(nèi)容
-
src:只顯示源圖像
-
dst:只顯示目標(biāo)圖像
-
srcOver:默認(rèn)值。將src與dst進(jìn)行組合茄唐,如果src和dst有重疊的地方息裸,則以src內(nèi)容覆蓋與dst重疊的地方。
-
dstOver:與srcOver相反沪编,This is useful when the source image should have been painted before the destination image, but could not be(摘自源碼注釋呼盆,翻譯:當(dāng)源圖像應(yīng)該在目標(biāo)圖像之前繪制,但不能繪制時(shí)蚁廓,這是非常有用的访圃。說實(shí)話,官方給出的下圖不理解為什么src的鳥和dst下面的圖片不顯示相嵌?)
-
srcIn:只顯示src和dst重合部分腿时,且dst的重合部分只有不透明度有用。(這個(gè)圖也不理解)
-
dstIn:只顯示src和dst重合部分饭宾,且src的重合部分只有不透明度有用批糟。
-
srcOut:顯示src圖像,但只顯示src和dst的不重合部分看铆,且重合部分只有dst是不透明的才算重合
-
dstOut:顯示dst圖像徽鼎,但只顯示src和dst的不重合部分,且重合部分只有src是不透明的才算重合
-
srcATop:將src與dst進(jìn)行組合,但只組合src和dst重合部分否淤,不重合部分顯示dst
-
dstATop:將src與dst進(jìn)行組合悄但,但只組合src和dst重合部分,不重合部分顯示src
-
xor:顯示src和dst不重合部分石抡,重合部分不顯示
-
plus:混合src和dst檐嚣,其中src的顏色透明度降低
-
modulate: 將src和dst重疊部分混合,使混合部分顏色相乘汁雷,這只能導(dǎo)致相同或更深的顏色(乘以白色净嘀,1.0,結(jié)果沒有變化;乘以黑色侠讯,得到黑色)挖藏。當(dāng)合成兩個(gè)不透明的圖像時(shí),其效果類似于將屏幕上的兩個(gè)透明度重疊厢漩。如果src或dst考慮透明度膜眠,可以使用[multiply]
-
screen: 將src圖像和dst圖像的分量的倒數(shù)相乘,并將結(jié)果的倒數(shù)相乘溜嗜。反轉(zhuǎn)組件意味著將完全飽和通道(不透明的白色)視為值0.0宵膨,而通常將值0.0(黑色、透明)視為值1.0炸宵。這與[modulate]混合模式本質(zhì)上是相同的辟躏,但是在乘法運(yùn)算之前顏色的值是倒過來的,在渲染之前結(jié)果是倒過來的土全。這只能導(dǎo)致相同或更淺的顏色(乘以黑色捎琐,1.0,結(jié)果沒有變化;乘以白色裹匙,0.0瑞凑,結(jié)果是白色)。同樣概页,在alpha通道中籽御,它只能產(chǎn)生更不透明的顏色。這與兩個(gè)同時(shí)在同一屏幕上顯示圖像的投影儀有相似的效果惰匙。
-
overlay:將src圖像和dst圖像的組件相乘技掏,然后調(diào)整它們以適應(yīng)dst。具體來說项鬼,如果dst值更小零截,則將其與src值相乘,而src值更小秃臣,則將src值的倒數(shù)與dst值的倒數(shù)相乘涧衙,然后將結(jié)果相乘哪工。反轉(zhuǎn)組件意味著將完全飽和的通道(不透明的白色)視為值0.0,而通常將值0.0(黑色弧哎、透明)視為值1.0雁比。
-
darken:通過從每個(gè)顏色通道中選擇最小值來組合源圖像和目標(biāo)圖像。輸出圖像的不透明度計(jì)算方法與[srcOver]相同撤嫩。
-
lighten: 通過從每個(gè)顏色通道中選擇最大值來組合源圖像和目標(biāo)圖像偎捎。輸出圖像的不透明度計(jì)算方法與[srcOver]相同。
-
colorDodge:用src的倒數(shù)除以dst序攘。反轉(zhuǎn)組件意味著將完全飽和通道(不透明的白色)視為值0.0茴她,而通常將值0.0(黑色、透明)視為值1.0程奠。
-
colorBurn:用dst函數(shù)的倒數(shù)除以src函數(shù)的倒數(shù)丈牢,然后求結(jié)果的倒數(shù)。反轉(zhuǎn)組件意味著將完全飽和通道(不透明的白色)視為值0.0瞄沙,而通常將值0.0(黑色己沛、透明)視為值1.0。
-
hardLight:將src圖像和dst圖像的組件相乘距境,然后對(duì)它們進(jìn)行調(diào)整申尼,使之有利于src。具體來說垫桂,如果src值更小师幕,則將其與dst值相乘,而如果dst值更小诬滩,則將dst值的倒數(shù)與src值的倒數(shù)相乘霹粥,然后將結(jié)果相乘。反轉(zhuǎn)組件意味著將完全飽和通道(不透明的白色)視為值0.0碱呼,而通常將值0.0(黑色蒙挑、透明)視為值1.0宗侦。
-
softLight: 對(duì)于小于0.5的src值使用[colorDodge]愚臀,對(duì)于大于0.5的src值使用[colorBurn]。這導(dǎo)致了與[overlay]相似但更柔和的效果矾利。
-
difference: 從每個(gè)通道的大值中減去小值姑裂。合成黑色沒有效果;合成白色使另一幅圖像的顏色相反。輸出圖像的不透明度計(jì)算方法與[srcOver]相同男旗。這種影響類似[exclusion]舶斧,但更為嚴(yán)重。
-
exclusion:從兩個(gè)圖像的和中減去兩個(gè)圖像的乘積的兩倍察皇。合成黑色沒有效果;合成白色使另一幅圖像的顏色相反茴厉。輸出圖像的不透明度計(jì)算方法與[srcOver]相同泽台。效果類似[difference],但更柔和矾缓。
-
multiply:將src圖像和dst圖像的組件相乘怀酷,包括alpha通道。這只能導(dǎo)致相同或更深的顏色(乘以白色嗜闻,1.0蜕依,結(jié)果沒有變化;乘以黑色,得到黑色)琉雳。由于alpha通道也是相乘的样眠,在一個(gè)圖像中一個(gè)完全透明的像素(不透明度0.0)會(huì)導(dǎo)致輸出中一個(gè)完全透明的像素。這與[dstIn]很相似翠肘,但是顏色混合了檐束。如果src和dst都沒有透明度,則可以使用[modulate]
-
hue:取src圖像的色調(diào)锯茄,以及dst圖像的飽和度和亮度厢塘。其效果是將dst圖像與src圖像著色。輸出圖像的不透明度計(jì)算方法與[srcOver]相同肌幽。在src圖像中完全透明的區(qū)域從dst圖像中獲取它們的色調(diào)晚碾。
-
saturation:取src圖像的飽和度,以及dst圖像的色調(diào)和亮度喂急。輸出圖像的不透明度計(jì)算方法與[srcOver]相同格嘁。在src圖像中完全透明的區(qū)域從dst圖像中獲取飽和度。
-
color:取src圖像的色調(diào)和飽和度廊移,以及dst圖像的亮度糕簿。其效果是將dst圖像與src圖像著色。輸出圖像的不透明度計(jì)算方法與[srcOver]相同狡孔。在src圖像中完全透明的區(qū)域從dst圖像中獲取它們的色調(diào)和飽和度懂诗。
-
luminosity:取src圖像的亮度,以及dst圖像的色調(diào)和飽和度苗膝。輸出圖像的不透明度計(jì)算方法與[srcOver]相同殃恒。在src圖像中完全透明的區(qū)域從dst圖像中獲取亮度