让我说我有这个位图,这是一个涂成全黑色的随机形状,并且说我想要改变它的颜色,我的位图是否必须首先涂成白色或者还有其它东西吗? / p>
答案 0 :(得分:3)
如果你正在使用Canvas,改变位图颜色的方法是改变位图本身。涉及的步骤如下:
假设您要加载某个地方的现有位图,并且想要以某种方式将其着色为红色。
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.bitmap);
之后,您需要在将其绘制到Canvas上之前修改位图的像素。您创建一个将保存所有像素的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值从0到255,因为它们是8位值。
在那之后你会使用完全相反的功能将它们放回去。
bitmap.setPixels(pixels, 0, 0, 0, 0, width, height);
然后你准备去调用Canvas.drawBitmap();
请记住,如果您经常这样做,这个过程应该很慢,除非您对游戏等实时应用感兴趣,否则Canvas是一种缓慢的做事方式。
希望它有所帮助!