从win32颜色代码到jQuery中设置Element BackColor

时间:2014-10-27 08:35:55

标签: jquery

我有XML文件,其中Elements Back颜色在节点中可用,其中节点的颜色值以Win32颜色值的形式存储。现在想要将此值转换为Hex值,以便我可以在jQuery中将其用作CSS属性。

示例如下

<INPUTBACKCOLOR>33023</INPUTBACKCOLOR>

将其更改为

 $("elemet").css('background-color',"#SomeHexValueFromINPUTBACKCOLORNode")

我该怎么做?

2 个答案:

答案 0 :(得分:1)

以下是代码:

color = 33023;
r = color & 0x000000FF;
g = ( color & 0x0000FF00 ) >> 8;
b = ( color & 0x00FF0000 ) >> 16;

alert(r+" "+g+" "+b);

它将颜色转换为rgb,现在您可以将其转换为十六进制或者可以使用rgb()表达式。

Source

function getColor(color)
{
    r = color & 0x000000FF;
    g = ( color & 0x0000FF00 ) >> 8;
    b = ( color & 0x00FF0000 ) >> 16;
    return "rgb("+r+","+g+","+b+")";
}

function getColorAndAlpha(color)
{
    r = color & 0x000000FF;
    g = ( color & 0x0000FF00 ) >> 8;
    b = ( color & 0x00FF0000 ) >> 16;
    a = ( color & 0xFF000000 ) >> 24;
    return "rgba("+r+","+g+","+b+","+a+")";
}

答案 1 :(得分:1)

您的源颜色存储在COLORREF中,因此其结构的格式为0x00bbggrr(十六进制)。

因此,要将其转换为CSS表示形式,您必须:

  • 将值转换为十六进制字符串
  • 在左侧填充带有零的十六进制字符串,
  • 交换红色和蓝色通道,
  • 添加哈希符号#

可以通过以下方式实现:

var cssColor = "000000" + parseInt(sourceColor, 10).toString(16);
cssColor = cssColor.substr(cssColor.length - 6);
cssColor = "#" + cssColor.substr(4, 2) + cssColor.substr(2, 2)
    + cssColor.substr(0, 2)