2010-08-17 18 views
19

dibujo un mapa de bits en un lienzo utilizando la siguiente llamada:¿Cómo tinte un mapa de bits en Android?

_playerImage = BitmapFactory.decodeResource(getResources(), R.drawable.player); 

¿Cómo puedo ahora teñir a esta imagen en blanco? Estoy tratando de hacer que la imagen parpadee en blanco como en los desplazamientos superiores cuando un enemigo es golpeado por una bala.

¿Debo usar algo que no sea BitmapFactory?

Respuesta

46

Puede usar ColorFilter en su Paint cuando dibuja el mapa de bits.

+8

Brilliant! ¡Gracias una tonelada! "Paint p = new Paint (Color.RED); \t \t filtro ColorFilter = new LightingColorFilter (Color.RED, 1); \t \t p.setColorFilter (filtro);" – FoppyOmega

+1

Hola, Romain, ¿hay algún método para dibujar un mapa de bits teñido que no implique crear una nueva instancia de ColorFilter para cada llamada de sorteo? Digamos que tienes un par de 100 sprites que quieres teñir de diferentes colores. eso requeriría un nuevo LightingColorFilter para cada llamada drawBitmap. Eso realmente no va muy bien con la filosofía de la mantequilla del proyecto en su totalidad de "no asignar en su llamada de render". Especialmente dado que el tintado tiene una correlación directa con el backend opengl blend/modulate que no requeriría ningún objeto asignado. ¿Qué tal una llamada drawBitmap (..., int mul, int add)? –

+2

@ P.Melch Buena pregunta (y esto es muy viejo, pero lo estoy poniendo aquí porque es relevante y otros pueden resultarle útiles) ... si tiene un conjunto relativamente pequeño de colores, podría mantener varias instancias (probablemente utilizando un grupo) de objetos ColorFilter, ya que LightingColorFilter no parece ser compatible con el cambio de color. Si alguien tiene una idea mejor, sin duda sería útil. – kungphu

Cuestiones relacionadas