我正在开发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);
答案 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的可变副本,并修改它的像素。