4

達成したいことについて少し助けが必要です。BitmapShaderアプリケーションでキャンバスに描画するために使用しています。カスタムpngファイルをシェーダーとしてペイント変数に設定していて、シェーダーの色を変更したいと思います。

これが私が使用しているサンプルコードです:

    Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.particle_point);
    BitmapShader shader = new BitmapShader(bitmap, Shader.TileMode.REPEAT, Shader.TileMode.REPEAT);
    mPaint.setShader(shader);
    ColorFilter filter = new LightingColorFilter(0xFFFFFFFF , 0x000000FF );
    mPaint.setColorFilter(filter);

私はそれを使用して色を変更できることがわかりました:

ColorFilter filter = new LightingColorFilter(0xFFFFFFFF , 0x000000FF );

、ただし、カスタムカラーピッカーを使用して色を変更できるようにする必要があります。カスタムカラーピッカーは、次のようなカラーコードを返します:-234423123

したがって、このカラーコードを使用して、ペイント変数の色として設定する方法はありますか。

前もって感謝します!

4

3 に答える 3

3

16進数に変換される色はFFFFFFFFF206FCADです。したがって、8つの主要なFを取り除く必要があります。

int color = -234423123;//0xFFFFFFFFF206FCAD
int myColor = 0x00000000FFFFFFFF & color;

myColorは大丈夫です。

于 2012-04-25T14:35:51.620 に答える
1

モスの答えにもう少し詳細を追加するだけです。彼が提案しているようにmyColor、必要な値として使用し、シェーダーに適切な値を設定するには、次のように追加myColorする必要があります。LightingColorFilter

ColorFilter filter = new LightingColorFilter(myColor , myColor );

そしてそれはうまくいくはずです。

于 2012-04-25T15:01:59.693 に答える
0

16進文字列を取得するには:

"#"+Integer.toHexString(n));

ただし、カラーピッカーは色のint値を返すだけであり、これで十分に機能するはずです。

ColorFilter filter = new LightingColorFilter(0xFFFFFFFF , 0x000000FF );

色を表す値を、colorpickerが返すintに変更するだけです...(もちろん、その前に0xはありません)...

私が間違っていなければ、これは同じようにうまくいくはずです!

于 2012-04-25T14:38:43.823 に答える