2

Android でキャンバスにペイント/描画しようとしているだけです。ただし、16 進数値または 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 を返し、これは機能します。ただし、16 進値は 65280 であり、これは機能しません。つまり、緑色の四角形は描画されません。

0x00ffff00色をここに設定し、後で別の 16 進値に設定する必要があるため、16 進値を使用する必要があります。

Android Color (ペイントの setColor) には負の整数が必要ですか?

4

3 に答える 3

8

問題は、それが0x0000ff00ではなく、完全に透明な緑であることです。すでにお気づきのように、完全に不透明な緑色は. 同様に、使用する場合は、色が完全に不透明になるようにアルファを指定する必要があります。0xff00ff00-16711936setARGB255

于 2012-12-20T23:31:42.730 に答える
1

Color には、アルファ、赤、緑、青の 4 つのフィールドがあります。何かがほとんど不透明なときはいつでも、それは否定的です。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 に答える