Cosa significa PorterDuff.Mode nella grafica Android. Cosa fa?


142

Vorrei sapere cosa significa PorterDuff.Mode nella grafica Android.

So che è una modalità di trasferimento .

So anche che ha attributi come DST_IN, Moltiplica ecc.


dalla mia recente scoperta. se hai immagini sovrapposte e provi a cambiare il filtro colore di una di esse, influisce sull'altra immagine che la sta sovrapponendo!
Jonathan,

Risposte:


321

Ecco un eccellente articolo con illustrazioni di un ingegnere di Google:

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

PorterDuff è descritto come un modo per combinare le immagini come se fossero "pezzi di cartone di forma irregolare" sovrapposti l'uno sull'altro, nonché uno schema per fondere le parti sovrapposte.

Il modo predefinito Android di immagini compongono è PorterDuff.Mode.SRC_OVER , che equivale a trarre la fonte immagine / colore sopra l'immagine di destinazione. In altre parole, fa quello che ti aspetteresti e disegna l'immagine di origine (quella che stai disegnando) sopra l'immagine di destinazione (la tela) con l'immagine di destinazione che mostra fino al grado definito dall'alfa dell'immagine di origine.

PorterDuff infografica dall'articolo

Puoi usare il tasto qui sotto per capire l'algebra che i documenti Android usano per descrivere le altre modalità (vedi l'articolo per una descrizione più completa con termini simili).

  • Sa Source alpha
  • Sc Colore sorgente
  • Da destinazione alfa
  • Colore destinazione dc

Dove alpha è un valore [0..1] e il colore viene sostituito una volta per canale (quindi utilizzare la formula una volta per ciascuno di rosso, verde e blu)

I valori risultanti sono specificati come coppia tra parentesi quadre come segue.

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

Dove alpha-valuee color-valuesono le formule per generare rispettivamente il canale alfa risultante e ciascun canale di colore.


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.