如何在Android中用颜色填充位图对象

时间:2010-07-17 18:56:35

标签: android bitmap

我正在开发Android游戏并且出现了一些问题 我想在位图对象上填充颜色但不能 我尝试过bitmap.setPixel,但我的Image是PNG格式(像圆圈或不清晰,用透明色包围),android不能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); //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);

3 个答案:

答案 0 :(得分:44)

如果您想要用纯色填充位图,可以尝试使用

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

通过用颜色填充所有像素来清除位图。

可能是你想要的效果

彼得

答案 1 :(得分:3)

这个问题可能很旧,但有一个更简单的解决方案。 您可以直接在ImageView上应用过滤器,而不是在Bitmap图像上应用过滤器:

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

您可以根据需要和提供给ImageView的位图尝试不同的滤镜模式(ADD,CLEAR,DARKEN,MULTIPLY ......)。

如果不起作用,请尝试删除模式:

imageView.setColorFilter(tintColor);

答案 2 :(得分:1)

通过copy()方法获取Bitmap的可变副本,并修改它的像素。