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