1

Graphics.fillColor() に渡される値を取得するために、任意のカラー ピッカーを設定しようとしています。
そのメソッドのシグネチャは「dynamic fillColor(int color)」であるため、色は RGB/RGBA ではなく整数のように見えます。Color クラスは、これらの値に対して一連の定数を定義しますが、ユーザーがカラー ピッカーで選択した任意の色を使用できるようにしたいと考えています。

この手順を使用して、RGB から Hex に変換してみました。

String r_hex_str   = p_rbg_color_lst[0].toRadixString(16); //to hexadecimal
String g_hex_str   = p_rbg_color_lst[1].toRadixString(16);
String b_hex_str   = p_rbg_color_lst[2].toRadixString(16);
String rgb_hex_str = '0x$r_hex_str$g_hex_str$b_hex_str';

int color_rgb_int = int.parse(rgb_hex_str);

return color_rgb_int;

ただし、fillColor() メソッドは新しい色の引数に反応しません。説明のために、上記の手順は [100, 145, 185] をカラー RGB トリプレットとして取り、整数出力として 6590905 を出力します。

StageXL.Color.Red 定数は 4294901760 です

6590905 と 4294901760 は同じ長さではなく、使用しているアルゴリズムが間違っていることを示しています...

何か案は?ありがとう

4

2 に答える 2

2

アルファ値を格納するために余分な 2 バイトを使用しているようです。したがって、コードを変更して追加する必要があります。

String a_hex_str   = 255.toRadixString(16); // 255 is ff, or fully opaque
String r_hex_str   = p_rbg_color_lst[0].toRadixString(16); 
String g_hex_str   = p_rbg_color_lst[1].toRadixString(16);
String b_hex_str   = p_rbg_color_lst[2].toRadixString(16);
String rgb_hex_str = '0x$a_hex_str$r_hex_str$g_hex_str$b_hex_str';

int color_rgb_int = int.parse(rgb_hex_str);

return color_rgb_int;

入力 [100, 145, 185] に対して 4284780985 を与える

于 2014-03-09T00:40:09.950 に答える
1

StageXL の色は ARGB 整数として保存されます。値を 0xFFAABBCC のような 16 進形式で表示すると簡単です。この値は、アルファ = 0xFF、赤 = 0xAA、緑 = oxBB、青 = 0xCC を意味します。

于 2014-10-01T07:31:34.247 に答える