2012-07-12 117 views
0

比方说,我有这样的位图,这是画全黑随机的形状,并说我想成为包来改变它的颜色,做我的位图已被全部涂成白色的第一或有没有其他的东西呢?安卓:更改位图的颜色

+0

它的没必要,你的位图应该被绘成白色首先你可以设置任何时间与任何背景 – AkashG 2012-07-12 10:20:52

+0

比为什么当我使用命令drawBitmap(位图,矩阵,油漆(颜色绿色));我的位图仍然是黑色..这是这样做的方式,或者我把它搞砸了吗? – 2012-07-12 10:24:18

+0

我认为一定有问题的东西在涂料(颜色绿色)这就是为什么它不绘画。只通过参数绘画和设置颜色绿色在paint作为paint.setColor(Color.GREEN); – AkashG 2012-07-12 10:37:52

回答

3

如果你使用Canvas更改位图的颜色的办法是改变自身的位图。所涉及的步骤如下:

说你要加载现有的位图,你有地方,你要着色它在某种程度上红色。

Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.bitmap); 

之后,您想在将其绘制到画布上之前修改位图的像素。您可以创建一个int数组来保存所有的像素。

int[] pixels; 
bitmap.getPixels(pixels, 0, 0, 0, 0, width, height); 

之后,您需要修改数组(比如添加到红色组件)。但是,现在我们所有的像素数组都是int值。 R,G和B都装在里面。如何检索它们?

int red = Color.red(pixels[n]); 
int green = Color.green(pixels[n]); 
int blue= Color.blue(pixels[n]); 

然后修改通过任何你想要的像素的值,你可以把它放在一个循环或你喜欢的,然后把它放回原来的像素阵列。此外,由于RGB值是8位值,因此RGB值从0到255。

之后,你会使用完全相反的功能回来。

bitmap.setPixels(pixels, 0, 0, 0, 0, width, height); 

然后你就可以去调用Canvas.drawBitmap();

请记住,这个过程应该如果你这样做频繁,除了Canvas是做事情的,如果你有兴趣的实时应用程序,如游戏缓慢的方式是缓慢的。

希望它有帮助!

+0

首先,我告诉我我需要初始化像素,所以我是int []像素= null;或者我也有一个编译错误..第二我不能输入for(int n = 0; n 2012-07-12 15:17:58

+0

没关系,我用了一个双循环:) , 有效。谢谢 :) – 2012-07-12 15:48:39