1

我试图设置一个任意颜色选择器来获取要传递给 Graphics.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

它似乎使用了额外的两个字节来存储 alpha 值。因此,您需要修改代码以添加:

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

Colors in StageXL are stored as ARGB integers. It's easier if you look at the value in hexadecimal format like this: 0xFFAABBCC. This value mean alpha = 0xFF, red = 0xAA, green = oxBB, blue = 0xCC.

于 2014-10-01T07:31:34.247 回答