2

以下のコードがソースビットマップmBitmapに変更を加えない理由はありますか?mBitmapは、カラーフィルターを適用したいグレースケール画像です。フィルタ自体は重要ではありませんが、私が適用したカラーフィルタは効果がありません。画面に描画されるのは、フィルターを適用していないかのように元のビットマップです。

次のようなさまざまなカラーフィルターを適用できます。

mPaint.setColorFilter(new LightingColorFilter(Color.RED, 100));

しかし、カラーマトリックスからカラーフィルターを作成しても、何も得られません。

私はAndroid2.3を使用しています。

私のコード:

float[] mat = new float[] {
        1f, 0f, 0f, 0f, 1f,
        2f, 0f, 2f, 1f, 0f,
        1f, 1f, 0f, 0f, 0f,
        0f, 0f, 0f, 1f, 0f,
        2f, 0f, 0f, 0f, 1f };

ColorMatrix colorMatrix = new ColorMatrix(mat);
ColorMatrixColorFilter colorFilter = new ColorMatrixColorFilter(colorMatrix);

mPaint.setColorFilter(colorFilter);

mCanvas.drawColor(Color.TRANSPARENT, PorterDuff.Mode.CLEAR);
mCanvas.drawBitmap(mBitmap, 0, 0, mPaint);
4

1 に答える 1

2

この質問をしてしまったことをお詫びします。私の理解不足のため、形成が不十分でした。上記のColorMatrixは実際には何もしないことを私は知っています。

要するに、私の最初の問題は、グレースケール画像に色相調整を行おうとしていたという事実に起因していました。結局のところ、グレースケール画像で色相を調整しても意味がないため、変化は見られませんでした。

混乱はこの(優れた)質問から来ました:

ColorMatrixとColorMatrixColorFilterを使用してDrawableの色相を変更する方法を理解する

私は、彼が最初に尋ねたように、アスカーが単にグレースケール画像に色相調整を行っていると思いました。今、私は彼が以前に着色された画像に色相調整をしているに違いないことを知っています。

まぁ。学習の最良の形態は、あなたがやろうとしていることについて実際に考えることを余儀なくされることから来ます!

于 2012-07-24T00:27:25.447 に答える