StageXL和Color值

时间:2014-03-08 21:25:27

标签: colors dart stagexl

我试图设置一个任意颜色选择器来获取要传递给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甚至没有相同的长度告诉我算法使用的是错误的......

任何想法? 感谢

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

StageXL中的颜色存储为ARGB整数。如果以十六进制格式查看值,则更容易:0xFFAABBCC。该值表示alpha = 0xFF,red = 0xAA,green = oxBB,blue = 0xCC。