Sto cercando di risolvere un problema con Android ColorFilters
. La documentazione è molto scarsa, quindi il metodo principale sta provando diverse varianti.Android ColorFilter - Modalità Porter-Duff
Il problema:
C'è una bitmap. Alcuni pixel hanno alpha = 255, altri hanno alpha = 0. Sto cercando di disegnare un cerchio con un colore specifico. Voglio il canale alfa invariato nella bitmap, ma mentre disegno voglio moltiplicare un colore per la bitmap-alpha.
Quindi, mentre si disegna un cerchio, voglio che i pixel con alfa = 0 non vengano dipinti, ma i pixel con alfa = 255 devono essere dipinti a colori che voglio. Il canale alfa non dovrebbe cambiare.
Sto cercando di utilizzare Porter-duff ColorFilter (classe PorterDuffColorFilter in sdk Android).
ci sono troppi modi e no-comprensibile descrizione sul sito ufficiale qui: http://developer.android.com/reference/android/graphics/PorterDuff.Mode.html
Penso che dovrei usare DST_ATOP
o SRC_ATOP
, ma non funzionano come ho descritto.
Inoltre, esiste uno strano parametro srcColor
nel costruttore del filtro colore porter-duff.
Non riesco a capire cosa significa "Sa" e "Sc" nelle formule [Da, Sc * Da + (1 - Sa) * Dc]
. Può essere dal colore che è stato passato al costruttore del filtro colorato e può anche essere impostato dal colore "paint.setColor".
Qualcuno sa, come funziona?
Potresti vedere google porter duff per vedere cosa significano queste modalità. – Renard
Questo ottimo documento spiega le modalità PorterDuff con le immagini: http://ssp.impulsetrain.com/porterduff.html Basta essere consapevoli che non aggiunge "src_" come fa Android: così "IN" = "SRC_IN" –