做事看結果,先上一張PorterDuff Mode的圖片:
這幅圖片清晰的表明了PorterDuff 的模式,對我來我說看起來確實有點難以記住,不可能我在以后寫代碼要用的時候有回去看這一服圖片吧,多費事兒?。∷晕易约何野盐易约旱睦斫夥窒硪幌?,順便給自己學習做一個記錄。
在生活中我們都知道一個物體放在另一個物體的上方會把下方的物體給遮住,對吧,這個就剛剛好和SRC_OVER,DST_OVER一樣。
Over是出處于什么上,所以我們可以看到SRC_OVER 模式:
SRC_OVER模式是將SRC放置到DST的上方。
反過來DST_OVER則是將DST放置到SRC上方,則得到了:
現在你可能會想,SRC_OVER模式是將SRC放置到DST的上方,DST_OVER是將DST放置到SRC上方。
是不是從中看出點規律來了?
沒錯就是想你想得一樣,SRC,DST就是一個參考的一個對象,不管PorterDuff的其他什么模式都是有參考對象的,他們的參考對象都是“_”前面的那個詞。
不信嗎?那我們就來看看ATOP模式:SRC_ATOP,DRC_ATOP。首先我們來看看ATOP的意思:
atop:在什么頂上,我靠是不是感覺有點懵逼了(是不是有句xxx不知當不當講?),這和Over有什么區別呢?我感覺我自己也受騙了,有點小小的懷疑人生。但是后來通過對這個單詞和圖片的理解,我感覺這難道不應該理解為a part of top(頂部的一部分嗎?)可能此時此刻你還有點懵逼。來我們接著來看破這該死的ATOP模式。
我們先來看看SRC_TOP,DST_TOP這兩個圖片:
我們先來說說SRC_ATOP吧,這個模式按我們剛才的理解思路來分析,這個的參照對象應該為SRC,再按照剛才對atop理解,atop是處于什么上方,那么DST將會處于SRC的上方,同時atop又可以理解為----->a part of top( 在頂部的一部分),那我就應該就取得DST參考對象處于頂部的一部分。
反過來DST也是同樣的理解方式。
現在我們以初中數學的交并集來理解下帶有INT和OUT的模式。
首先我們來看看:INT模式
IN其實理解出來就是數學上的"∩"交集符號,是不是看著特別的眼熟。SRC ∩ DST其實就是圓的一部分——扇形,圖形我們就得到了,但是他的顏色是不是不一樣,這個我們就需要看他的參考對象了,對于SRC_INT 他的參考對象是SRC所以就是賤藍色的,反過來DST的就是騷粉色的。
到現在我們已經理解了6種模式了,還剩下OUT類型了。
IN 和 OUT 就是一對反義詞,內對外。
圖中我們可以看到他們被 扣~~ 掉的一部分剛好是In的那一部分,即 SRC ∩ DST,同樣我們以剛才的邏輯來理解OUT,我們可以看到參考SRC_OUT的參考對象是SRC,剩余的部分則是SRC的,用數學公式表示的話則為:SRC - (SRC ∩ DST);
同樣的DST_OUT也是一樣的數學表達為DST - (SRC ∩ DST);
現在還剩最后一種模式"XfOR" 現在感覺看參考對象是不是感覺不行了?等等稍安勿躁,既然這里沒有寫出參考對象,那么我就直接取兩個的并集為一個參考對象,DRC ∪ SRC如圖:
現在的話我們在扣~~去交集的部分SRC ∩ DST,那我們不就得到了“XOR”模式了么: