2016-07-17 24 views
0

浮動色に16進文字列値を処理する必要があります。 0は00に相当し、1は、FFである場合16進数の色を浮動小数点数に変換する方法0-1?

実際の色は、

{ 0.63671875f, 0.76953125f, 0.22265625f, 1.0f } 

が緑色である(RGBAフォーマットで)です。しかし0から255までの%を計算して浮動小数点値を設定するには、色を0-255小数に変換する必要があります。

#AABBCCFFをfloat配列に変換するにはどうすればよいですか?

parsecolor iは整数値があります。

Color.parseColor("#AABBCCFF"); 

しかし、どのようにフロートに各色に整数を変換しますか?赤、緑、青、ALPA

答えて

0

Iは溶液湿:

private float[] getFloatArrayFromARGB(String argb){ 
    int color_base = Color.parseColor(argb); 
    int red = Color.red(color_base); 
    int green = Color.green(color_base); 
    int blue = Color.blue(color_base); 
    int alpha = Color.alpha(color_base); 

    return new float[]{ 
      (red/255f), 
      (green/255f), 
      (blue/255f), 
      (alpha/255f) 
    }; 
} 

使用:

String argb = "#FFFF0000"; 
float[] color = this.getFloatArrayFromARGB(argb); 
GLES20.glUniform4fv(mColorHandle, 1, color, 0); 

:今のOpenGL

+0

乗算と3Dオブジェクトを描画するためにARGB形式を使用して100で割るDは'(((red * 100)/ 255)/ 100)'は 'red/255f' – Richard

+1

'(((red * 100)/ 255)/ 100) 'に簡約することもできます。 0または1のみ返す – Richard

+0

リチャード、私はJavaで2つの整数を分割するとき、私はテストし、フレームワークは整数からfloat automaticaly結果を変換します。結果は 'new float []'によって解析され、結果はfloat値の配列を返します。 "100"を削除した結果を簡略化してくれてありがとう。 –

関連する問題