Que signifie PorterDuff.Mode dans les graphiques Android, que fait-il?


142

J'aimerais savoir ce que signifie PorterDuff.Mode dans les graphiques Android.

Je sais que c'est un mode de transfert .

Je sais aussi qu'il a des attributs tels que DST_IN, Multiply etc.


de ma récente découverte. si vous avez des images qui se chevauchent et que vous essayez de changer le filtre de couleur de l'une d'elles, cela affecte l'autre image qui la chevauche!
Jonathan

Réponses:


321

Voici un excellent article avec des illustrations d'un ingénieur Google:

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

PorterDuff est décrit comme un moyen de combiner des images comme s'il s'agissait de "morceaux de carton de forme irrégulière" superposés les uns sur les autres, ainsi que comme un schéma pour mélanger les parties qui se chevauchent.

La manière Android par défaut de composer des images est PorterDuff.Mode.SRC_OVER , ce qui équivaut à dessiner l'image / la couleur source sur l'image cible. En d'autres termes, il fait ce que vous attendez et dessine l'image source (celle que vous dessinez) au-dessus de l'image de destination (le canevas) avec l'image de destination visible jusqu'au degré défini par l'alpha de l'image source.

Infographie de PorterDuff de l'article

Vous pouvez utiliser la clé ci-dessous pour comprendre l'algèbre que la documentation Android utilise pour décrire les autres modes (voir l'article pour une description plus complète avec des termes similaires).

  • Sa Source alpha
  • Couleur source SC
  • Da Destination alpha
  • Couleur de destination CC

Où alpha est une valeur [0..1]et la couleur est remplacée une fois par canal (utilisez donc la formule une fois pour chacun des rouges, verts et bleus)

Les valeurs résultantes sont spécifiées sous forme de paire entre accolades comme suit.

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

alpha-valueet color-valuesont des formules pour générer respectivement le canal alpha résultant et chaque canal de couleur.


En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.