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 つに分割したい場合はうまくいかず、半分が黒、半分が白の 2 つに分割されます。

y の値に応じて色を変えるには、if (x<50) (およびその他の条件) の中括弧内にテストを配置する必要があります。

OK、あなたのコメントが記録されました、あなたが必要です

Resources res = this.getResources();

上のどこか、それから

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

そして白の場合

于 2010-10-24T21:38:13.807 に答える
1

たとえば、ビットマップに直接描画する場合、色の int は色のリソース ID ではなく、ARGB の実際の色値の 16 進表現です (たとえば、黒の場合は 0xff000000、白の場合は 0xffffffff)。getResources().getColor(colorResourceId) を介してこの値を取得することもできます。

また、ピクセルごとにビットマップに直接描画しようとする代わりに、Android のキャンバス ツールの使用方法を学びます。単純にキャンバスを白で塗りつぶしてから、drawRect (http://developer.android.com/reference/android/graphics/ Canvas.html#drawRect(float, float, float, float, android.graphics.Paint)) 画面の残りの半分に黒い長方形。ネストされたループよりもはるかに少ないコードであり、システムは、ビットマップ全体をピクセルごとに苦労して形成するのではなく、ハードウェア アクセラレーションやその他のショートカットを使用してキャンバス ペインティングを最適化できます。

于 2010-10-24T23:23:47.740 に答える