Как заполнить растровый объект цветом в 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() и измените его.