我试图设置一个任意颜色选择器,以获取要传递给Graphics.fillColor()的值。
该方法的签名是“动态fillColor(int颜色)”,因此颜色似乎不是RGB/RGBA,而是一些整数。Color类为这些值定义了一组常量,但我希望能够使用用户在我的颜色选择器中选择的任何颜色。
我尝试使用以下过程从RGB转换为十六进制:
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的长度不一样,这告诉我我使用的algo是错误的.
有什么想法吗?谢谢
发布于 2014-03-09 00:40:09
它似乎使用额外的两个字节来存储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-10-01 07:31:34
StageXL中的颜色存储为ARGB整数。如果您查看十六进制格式的值(如: 0xFFAABBCC ),则会更容易。这个值意味着alpha = 0xFF,red = 0xAA,green = oxBB,blue = 0xCC。
https://stackoverflow.com/questions/22275294
复制相似问题