十进制值到 rgb 并返回到十进制
decimal value to rgb and back to decimal
我有一个十进制形式的颜色,需要将它转换成 rgb 再转换回 de,所以我用这个来做到这一点:
var currentcolor = 0xffd100;
const rgb_format = (c) => {
var newrgb = {r: (c & 0xff0000) >> 16,
g: (c & 0x00ff00) >> 8,
b: (c & 0x0000ff)}
return newrgb;
};
var rgb = rgb_format(currentcolor);
const decimal_format = (newrgb) => {
let decimal = (newrgb.r << 16) + (newrgb.g << 8) + (newrgb.b);
console.log(decimal);
return decimal;
};
color.color = decimal_format(rgb);
事实是,我有一个 rgb 编辑器,每个值 (r、g、b) 都有滑块。它们按应有的方式工作,但是当 r
中的值为 16 或更小时,其他滑块(g,b)停止更改我正在编辑颜色的组件的颜色。
当 r
和 b
为 0 并且 g
大于 16 时也会发生同样的情况。在这种情况下,当 g 小于 16 时,g 将颜色更改为红色,并且当它大于 16 时它不显示颜色。
这是显示我的问题的 gif:
color-editing-problem-gif
或者
alternate
...I am also displaying the color like this: style="background: #{currentcolor.toString(16)};
这将无法正常工作。考虑颜色 1092 十进制 (0x000444)。如果 currentcolor
具有该值,则 currentcolor.toString(16)
会导致 444
。 #444
与CSS中的#000444
不相同,#444
是颜色#444444
。同样,颜色 65535 (0x00FFFF) 将导致 #ffff
,这是无效的 CSS 颜色(它们必须是三位或六位,而不是四位)。
要正确输出颜色,您需要填充字符串的开头:
style="background: #{currentcolor.toString(16).padStart(6, "0")}
我有一个十进制形式的颜色,需要将它转换成 rgb 再转换回 de,所以我用这个来做到这一点:
var currentcolor = 0xffd100;
const rgb_format = (c) => {
var newrgb = {r: (c & 0xff0000) >> 16,
g: (c & 0x00ff00) >> 8,
b: (c & 0x0000ff)}
return newrgb;
};
var rgb = rgb_format(currentcolor);
const decimal_format = (newrgb) => {
let decimal = (newrgb.r << 16) + (newrgb.g << 8) + (newrgb.b);
console.log(decimal);
return decimal;
};
color.color = decimal_format(rgb);
事实是,我有一个 rgb 编辑器,每个值 (r、g、b) 都有滑块。它们按应有的方式工作,但是当 r
中的值为 16 或更小时,其他滑块(g,b)停止更改我正在编辑颜色的组件的颜色。
当 r
和 b
为 0 并且 g
大于 16 时也会发生同样的情况。在这种情况下,当 g 小于 16 时,g 将颜色更改为红色,并且当它大于 16 时它不显示颜色。
这是显示我的问题的 gif:
color-editing-problem-gif
或者
alternate
...I am also displaying the color like this:
style="background: #{currentcolor.toString(16)};
这将无法正常工作。考虑颜色 1092 十进制 (0x000444)。如果 currentcolor
具有该值,则 currentcolor.toString(16)
会导致 444
。 #444
与CSS中的#000444
不相同,#444
是颜色#444444
。同样,颜色 65535 (0x00FFFF) 将导致 #ffff
,这是无效的 CSS 颜色(它们必须是三位或六位,而不是四位)。
要正确输出颜色,您需要填充字符串的开头:
style="background: #{currentcolor.toString(16).padStart(6, "0")}