2010-07-17 6 views
14

Je travaille sur le jeu Android et il y a quelques problèmes apparaissent Je veux remplir une couleur sur l'objet bitmap mais ne peut pas J'ai essayé bitmap.setPixel mais mon image est le format PNG (comme un cercle ou flou, entouré de couleur transparente) et les applications ne peuvent pas getHeight() ou getWidth(), c.-à-Comment remplir l'objet bitmap avec la couleur dans 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);

Répondre

1

Obtenir une copie mutable du Bitmap par le procédé copy(), et modifier ses pixels.

41

Si vous êtes désireux de remplir un bitmap avec une couleur unie, vous pouvez essayer d'utiliser

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

Il efface le bitmap en remplissant tous les pixels avec une couleur.

est peut-être l'effet que vous voulez

Peter

3

Cette question peut-être vieux, mais il y a une solution beaucoup plus simple pour cela. Au lieu d'appliquer un filtre sur l'image bitmap, vous pouvez l'appliquer sur le ImageView directement:

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

Vous pouvez essayer différents modes de filtres de couleur (ADD, TRANSPARENT, Obscurcir, ...) en fonction de votre besoins et le bitmap fourni à votre ImageView.

Si cela ne fonctionne pas, essayez de supprimer le mode:

imageView.setColorFilter(tintColor); 
Questions connexes