2011-11-26 9 views
126

Mi piacerebbe sapere cosa PorterDuff.Mode significa nella grafica Android.Cosa significa PorterDuff.Mode nella grafica di Android. Che cosa fa?

So che è una modalità di trasferimento .

so anche, che ha attributi quali DST_IN, moltiplicazione ecc

+0

dalla mia recente scoperta. se hai delle immagini sovrapposte e provi a cambiare il filtro colore di una di esse, si affetta l'altra immagine che la sta sovrapponendo! – jonney

risposta

268

Ecco un eccellente articolo con illustrazioni da un tecnico Google:

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

PorterDuff è descritto come un modo di combinare immagini come fossero "irregolari pezzi sagomati di cartone" sovrapposto sulla l'un l'altro, nonché uno schema per mescolare le parti che si sovrappongono.

Il modo predefinito di composizione di Android è PorterDuff.Mode.SRC_OVER, che equivale a disegnare l'immagine/colore di origine su l'immagine di destinazione. In altre parole, fa ciò che ti aspetteresti e disegna l'immagine sorgente (quella che stai disegnando) sopra l'immagine di destinazione (la tela) con l'immagine di destinazione che mostra fino al grado definito dall'alpha dell'immagine sorgente.

PorterDuff infographic from the article

È possibile utilizzare il tasto qui sotto per capire l'algebra che the Android docs uso per descrivere le altre modalità (vedi the article per una più piena desription con termini simili).

  • Sa Fonte alpha
  • Sc colore Fonte
  • Da alfa Destinazione
  • Dc colore Destinazione

Dove alfa è un valore [0..1], e il colore è sostituito una volta per ch annel (quindi utilizzare la formula una volta per ciascuna di rosso, verde e blu)

I valori risultanti vengono specificati come coppia in parentesi quadre come segue.

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

Dove alpha-value e color-value sono formule per generare rispettivamente chanel alfa risultante e ogni chanel colore.