2010-07-17 5 views
14

Я работаю над Android-игрой, и появляется некоторая проблема Я хочу заполнить цвет на растровом объекте, но не могу Я пробовал bitmap.setPixel, но мое изображение является PNG-форматом (например, круг или нечеткие, окруженный прозрачным цветом) и андроид не может GetHeight() или GetWidth(), т.е.Как заполнить растровый объект цветом в 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);

ответ

1

Получить изменяемую копию Bitmap методом copy() и изменить его пиксели.

41

Если вы желаете, чтобы заполнить битовую карту с цветом вы могли бы попробовать использовать

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

Она очищает битовую карту, заполнив все пиксели с цветом.

Может быть эффект, который вы хотите

Петр

3

Этот вопрос может быть старым, но есть гораздо более простое решение для этого. Вместо применение фильтра на растровом изображении, вы можете применить его на ImageView непосредственно:

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

Вы можете попробовать различные режимы цветного фильтра (ADD, ОЧИСТИТЬ, темнеет, умножать, ...) в зависимости от вашего потребностям и растровому изображению, предоставленному вашему ImageView.

Если это не сработает, попробуйте удалить режим:

imageView.setColorFilter(tintColor); 
Смежные вопросы