COLORREF到RGB

时间:2014-10-19 09:12:17

标签: javascript

我正在尝试使用JavaScript转换COLORREF

COLORREF

  

指定显式RGB颜色时,COLORREF值具有   遵循十六进制格式:

     

0x00bbggrr

     

低位字节包含红色相对强度的值;   第二个字节包含绿色值;和第三个字节   包含蓝色的值。高位字节必须为零。该   单字节的最大值为0xFF。

     

要创建COLORREF颜色值,请使用RGB宏。提取   颜色的红色,绿色和蓝色组件的单个值   值,使用 GetRValue GetGValue GetBValue 宏,   分别

我知道UInt32Array,但我不知道如何使用它。

如何将COLORREF转换为RGB?

它应该与我发现的这个功能相反:

 cssColorToCOLORREF: function(csscolor) {
   let rgb = csscolor.substr(1);
   let rr = rgb.substr(0, 2);
   let gg = rgb.substr(2, 2);
   let bb = rgb.substr(4, 2);
   return parseInt("0x"+bb+gg+rr);
 },

1 个答案:

答案 0 :(得分:2)

COLORREF的typedef被称为DWORD,它是32位无符号整数的Microsoft名称,因此其值可以拆分为R,G, B,使用常规位操作的组件。

作为阵列:

input = 4294967295;
output = [
     input       & 0xff,
    (input >> 8) & 0xff,
    (input >>16) & 0xff,
    (input >>24) & 0xff
];

导致输出顺序为[red, green, blue, alpha];或作为对象:

output = {
    r: input       & 0xff,
    g:(input >> 8) & 0xff,
    b:(input >>16) & 0xff,
    a:(input >>24) & 0xff
};

产生output.routput.goutput.boutput.a