Co oznacza PorterDuff.Mode w grafice Androida?

142

Chciałbym wiedzieć, co oznacza PorterDuff.Mode w grafice Androida.

Wiem, że to tryb transferu .

Wiem też, że ma takie atrybuty jak DST_IN, Multiply itp.

rogerstone
źródło
z mojego niedawnego odkrycia. jeśli masz nakładające się obrazy i spróbujesz zmienić filtr kolorów jednego z nich, wpłynie to na inny obraz, który na niego zachodzi!
Jonathan

Odpowiedzi:

321

Oto doskonały artykuł z ilustracjami autorstwa inżyniera Google:

http://ssp.impulsetrain.com/porterduff.html

PorterDuff jest opisywany jako sposób łączenia obrazów tak, jakby były „kawałkami tektury o nieregularnych kształtach” nałożonych na siebie, a także jako schemat łączenia nakładających się części.

Domyślnym Android sposób komponowania obrazów jest PorterDuff.Mode.SRC_OVER , co przekłada się na rysunku źródłowego obrazu / koloru nad obrazem docelowym. Innymi słowy, robi to, czego można się spodziewać i rysuje obraz źródłowy (ten, który rysujesz) na wierzchu obrazu docelowego (kanwy), z obrazem docelowym prześwitującym w stopniu określonym przez alfa obrazu źródłowego.

Infografika PorterDuff z artykułu

Możesz użyć klucza poniżej, aby zrozumieć algebrę, której dokumentacja Androida używa do opisania innych trybów (zobacz artykuł, aby uzyskać pełniejszy opis z podobnymi terminami).

  • Sa Source alpha
  • Kolor źródła Sc
  • Da Destination alpha
  • Kolor docelowy DC

Gdzie alfa jest wartością [0..1], a kolor jest zastępowany raz na kanał (więc użyj wzoru raz dla każdego koloru czerwonego, zielonego i niebieskiego)

Wynikowe wartości są określane jako para w nawiasach kwadratowych w następujący sposób.

[<alpha-value>,<color-value>]

Gdzie alpha-valuei color-valuesą formułami do generowania odpowiednio otrzymanego kanału alfa i każdego kanału koloru.

Phasmal
źródło