2

我只是想在 Android 中绘制/绘制画布。但是,当我使用十六进制值或使用 setARGB 方法设置颜色时,它不起作用。但是当我使用 Color.x(例如 Color.GREEN)时,它可以工作。这是代码:

    Bitmap image = Bitmap.createBitmap(bitmapWidth, bitmapHeight, Bitmap.Config.ARGB_8888);
    Canvas canvas = new Canvas(image);
    Paint paintBackground = new Paint();
    int green = Color.argb(0, 0, 255, 0); // 65280 (Won't work)
    green = 0x0000ff00; // 65280 (Won't work)
    paintBackground.setARGB(0, 0, 255, 0);
    green = paintBackground.getColor(); // 65280 (Won't work)
    green = Color.GREEN; // -16711936 (Works!)
    paintBackground.setColor(green);
    green = paintBackground.getColor(); // -16711936
    paintBackground.setStyle(Paint.Style.FILL);
    canvas.drawRect(0, 0, bitmapWidth, bitmapHeight, paintBackground);

所以基本上 Color.GREEN 返回 -16711936 - 这很有效。但是,十六进制值是 65280 - 这不起作用。也就是说,它不会绘制绿色矩形。

我需要使用十六进制值,因为我需要将颜色设置为0x00ffff00此处,然后再设置为不同的十六进制值。

Android 颜色(Paint 中的 setColor)是否需要负整数?

4

3 回答 3

8

问题是0x0000ff00不是绿色,而是完全透明的绿色。正如您已经注意到的那样,完全不透明的绿色将是。同样,在使用时,您需要指定alpha 以使颜色完全不透明0xff00ff00-16711936setARGB255

于 2012-12-20T23:31:42.730 回答
1

颜色包含 4 个字段,alpha、红色、绿色和蓝色。每当任何事情大多不透明时,它都是负面的。50.2%透明绿色为正 (0x7F00FF00/2,130,771,712),49.8%透明绿色为负 (0x8000FF00/-2,147,418,368)

于 2014-10-22T21:05:27.283 回答
0

您也可以调用Color.rgb(0, 255, 0). rgb()默认情况下,alpha 为 255,完全不透明。

于 2014-10-22T20:50:06.460 回答