2012-04-21 2 views
3

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

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

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のようなカラーコードを返します。

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

ありがとうございます!

+0

どのカラーピッカーを使用していますか? – Moss

+0

私はこのカラーピッカーを使用しています:http://code.google.com/p/color-picker-view/ –

答えて

3

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

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

myColorはokです。

0

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

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

しかし、あなたのカラーピッカーがちょうどで動作するために十分であるべき色のint型の値を返します!

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

ジャスト(ofcourseのそれの前に0xをせずに)... INTあなたのColorPickerリターンに色を表す値を変更...

私は間違っていない場合、これはうまく動作するはずです罰金として!

+0

私のカラーピッカーは-32314112のような値を返します。私が 'ColorFIlter'で最初にこの値を設定すると、どの色を選んでも色が黒くなります。 –

+0

ああ、これは負の値ではうまくいかないようです。その場合、Mossのソリューションは正しいですね! – Ferdau

1

モスさんの答えにちょっと詳しく説明してください。

ColorFilter filter = new LightingColorFilter(myColor , myColor); 

そして、それが動作するはずです:彼はあなたが欲しい値としてmyColorを使用することができますし、あなたのシェーダに正しい値を設定することをお勧めとして、あなたはこのようなあなたのLightingColorFiltermyColorを追加する必要があります。

+0

お返事ありがとうございました。私はそれを理解しようとしていました。 –

+0

ニース追加+1 – Moss

関連する問題