2010-07-17 22 views
14

Sto lavorando su Android e ci sono alcuni problemi visualizzati Voglio riempire un colore su un oggetto bitmap ma non posso Ho provato bitmap.setPixel ma la mia immagine è in formato PNG (come un cerchio o di contrasto, circondato con colore trasparente) e android non può getHeight() o getWidth(), cioèCome riempire l'oggetto bitmap con il colore in 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);

risposta

1

Ottenere una copia mutevole della bitmap con il metodo copy(), e modifica i suoi pixel.

41

Se si vogliono riempire una bitmap con un colore solido si potrebbe provare a utilizzare

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

Si cancella il bitmap riempiendo tutti i pixel con un colore.

potrebbe essere l'effetto desiderato

Peter

3

Questa domanda potrebbe essere vecchia, ma c'è una soluzione molto più semplice per questo. Invece di applicare un filtro l'immagine bitmap, è possibile applicare sulla ImageView direttamente:

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

È possibile provare diverse modalità di filtro colore (ADD, chiaro, Scurisci, Moltiplica, ...) a seconda della esigenze e la bitmap fornita al tuo ImageView.

Se non funziona, provare a rimuovere la modalità:

imageView.setColorFilter(tintColor); 
Problemi correlati