0

我使用以下代码来创建一个半白半黑的图像并将其放在按钮上。我的代码有什么问题?(后面我们想使用更复杂的逻辑来判断哪些像素是白色的,哪些是黑色的,但它仍然应该是黑白的)

int height = 100;
int width = 100;

quadratImage = Bitmap.createBitmap(
        width, 
        height, 
        Bitmap.Config.ALPHA_8);
for (int x = 0; x < width; x++){
    for (int y = 0; y < height; y++){
        int color;

        if (x< 50){

            color = R.color.black;

        }
        else{
            color = R.color.white;
        }

        quadratImage.setPixel(
                x, y, color);
    }
}
quadratImage.prepareToDraw();
imageButton.setImageBitmap(quadratImage);

我的颜色定义为:

<color name="black">#000000</color>
<color name="white">#ffffff</color>
4

2 回答 2

1

如果您想将图像分成 4 份,它将不起作用,您将把它分成两份 - 一半黑色,一半白色。

您需要在 if (x<50) (和其他条件)大括号内进行测试,以根据 y 值改变颜色。

好的,您的评论已注明,您需要

Resources res = this.getResources();

上面某处,然后

color = res.getColor(R.color.black);

对于白色

于 2010-10-24T21:38:13.807 回答
1

一方面,当您直接绘制位图时,颜色的 int 不是颜色的资源 ID,而是 ARGB 实际颜色值的十六进制表示(例如,黑色为 0xff000000,白色为 0xffffffff)。您还可以通过 getResources().getColor(colorResourceId) 获取此值。

此外,与其尝试逐像素直接绘制位图,不如学习使用 Android 的 Canvas 工具 - 您可以简单地用白色填充画布,然后 drawRect (http://developer.android.com/reference/android/graphics/ Canvas.html#drawRect(float, float, float, float, android.graphics.Paint)) 屏幕另一半的黑色矩形。这将比您的嵌套循环少得多的代码,并且系统可以使用硬件加速和其他快捷方式优化那里的画布绘画,而不是痛苦地逐个像素地形成整个位图。

于 2010-10-24T23:23:47.740 回答