2017-08-09 1 views
0

Je me demande quelle logique Android utilise pour calculer la couleur finale d'une vue étant donné que deux vues semi-transparentes sont empilées. Ce que je dois faire spécifiquement est de prendre deux vues semi-transparentes (disons avec les arrière-plans #66000000 et #33000000) et de comprendre ce que la vue singulière équivalente COULEUR serait.Android Transparent Voir la logique de calcul des couleurs

J'ai essayé ColorUtils.blendARGB mais cela ne me donne pas la valeur correcte.

+0

Juste s'assurer que vous ne cherchez pas cela: https://stackoverflow.com/questions/8280027/what-does-porterduff-mode-mean-in-android-graphics-what-does-it-do –

+0

Non, je besoin d'un calcul mathématique pour comprendre la couleur résultante – HaydenKai

Répondre

0

Ok cette formule semble fonctionner pour ce qu'il me fallait:

C1 = [R1, G1, B1] est la couleur du pixel d'avant-plan.

C2 = [R2, G2, B2] est la couleur du pixel d'arrière-plan.

p1 est le pourcentage d'opacité du pixel de premier plan. (0,4) dans mon cas

p2 est le pourcentage d'opacité du pixel d'arrière-plan. (0,2)

NewPixelColor = (p1 * c1 + p2 * c2-p1 * p2 * c2)/(p1 + p2-p1 * p2)

NewPixelOpacity = p1 + p2-p1 * p2

+0

Sur l'exemple d'opérateur de: https://en.wikipedia.org/wiki/Alpha_compositing –