2010-07-17 15 views
14

Estoy trabajando en el juego de Android y hay algún problema aparece Quiero llenar un color en el objeto de mapa de bits pero no puedo Intenté bitmap.setPixel pero mi Imagen es formato PNG (como un círculo o de enfoque, rodeado de color transparente) y androide no puede getHeight() o getWidth(), es decirCómo llenar el objeto de mapa de bits con color en Android

 
ImageView i = new ImageView(mContext); 
Bitmap bMap = BitmapFactory.decodeResource(this.mContext.getResources(), mImageIds[position]);

// for(int i1 = 0; i1 < bMap.getHeight();i1++) // for(int j = 0; j < bMap.getWidth(); j ++) // bMap.setPixel(i1, j, Color.RED); //can not set

i.setImageBitmap(bMap); i.setLayoutParams(new Gallery.LayoutParams(150, 100)); i.setScaleType(ImageView.ScaleType.FIT_XY); i.setBackgroundResource(mGalleryItemBackground); i.setBackgroundColor(Color.TRANSPARENT);

Respuesta

1

Obtenga una copia mutable del mapa de bits por el método copy(), y modificar sus píxeles.

41

Si estás interesado en llenar un mapa de bits con un color sólido que podría tratar de usar

Bitmap b = /*however you get a bmp*/ 
b.eraseColor(color) 

Se despeja el mapa de bits rellenando todos los píxeles con un color.

podría ser el efecto que desea

Peter

3

Esta pregunta puede ser viejo, pero no es una solución mucho más simple para esto. En lugar de aplicar un filtro de la imagen de mapa de bits en adelante, se puede aplicar directamente sobre la ImageView:

imageView.setColorFilter(tintColor, PorterDuff.Mode.MULTIPLY); 

Puede probar diferentes modos de filtro de color (ADD, CLARO, OSCURO, multiplicar, ...) en función de su necesidades y el mapa de bits suministrado a su ImageView.

Si esto no funciona, intente eliminar el modo de:

imageView.setColorFilter(tintColor); 
Cuestiones relacionadas