1

ランダムな形ですべて黒に塗られたこのビットマップがあり、色を変更するためにベールになりたいとしましょう。最初にビットマップをすべて白に塗る必要がありますか、それとも何か他のものがありますか?

4

1 に答える 1

4

Canvas を使用している場合、ビットマップの色を変更する方法は、ビットマップ自体を変更することです。必要な手順は次のとおりです。

どこかにある既存のビットマップをロードし、それを何らかの形で赤くしたいとします。

Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.bitmap);

その後、キャンバスにペイントする前にビットマップのピクセルを変更します。すべてのピクセルを保持する 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 値は 8 ビット値であるため、0 ~ 255 になります。

その直後に、まったく逆の関数を使用してそれらを元に戻します。

bitmap.setPixels(pixels, 0, 0, 0, 0, width, height);

これで、Canvas.drawBitmap(); を呼び出す準備が整いました。

このプロセスは、頻繁に行う場合は遅くなるはずであることに注意してください。また、ゲームなどのリアルタイム アプリに関心がある場合は、Canvas を使用すると処理が遅くなります。

それが役に立ったことを願っています!

于 2012-07-12T10:53:36.550 に答える