Как заполнить растровый объект цветом в Android

Я работаю над игрой Android, и есть некоторые проблемы Я хочу заполнить цвет на растровом объекте, но не могу Я пробовал bitmap.setPixel, но мое изображение имеет формат PNG (например, круг или нерезкий, окруженный прозрачным цветом), и андроид не может getHeight() или getWidth(), т.е.

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);//не может установить

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 b = /*however you get a bmp*/
b.eraseColor(color)

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

Возможно, вы хотите

Петр

Ответ 2

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

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

Вы можете попробовать различные режимы цветового фильтра (ADD, CLEAR, DARKEN, MULTIPLY,...) в зависимости от ваших потребностей и растрового изображения, предоставленного вашему ImageView.

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

imageView.setColorFilter(tintColor);

Ответ 3

Получите изменчивую копию растрового изображения методом copy() и измените его.