extjs中的颜色转换

时间:2018-10-29 10:54:04

标签: javascript extjs

在extjs中是否有将MS Access颜色代码转换为十六进制,反之亦然的方法? 例如。:  -(白色)16777215-> #FFFFFF  -(蓝色)16711680->#0000FF

2 个答案:

答案 0 :(得分:2)

显然,MS Access颜色为BGR格式-您可以将其转换为十六进制格式,并按正确的顺序放置值(记住,对于较小的数字,请填写缺少的“ 0”)

var color = 16711680;
var colorBGR = color.toString(16);
console.log("BGR:", "#" + colorBGR)
var colorRGB = colorBGR.slice(-2) + colorBGR.slice(2,4) + colorBGR.slice(0,2)
console.log("RGB:", "#" + colorRGB)

或者,您可以使用位运算来获取颜色分量:

var color = 5243047; // #A70050

var r,g,b;
b = (color & (255 << 16)) >> 16;
g = (color & (255 << 8)) >> 8;
r = color & 255;

console.log(r.toString(16),g.toString(16),b.toString(16))

答案 1 :(得分:0)

纯js:

var color = 5243047;

var b = Math.floor(color / (256 * 256));
var g = Math.floor((color - b * 256 * 256) / 256);
var r = color - b  * 256 * 256 - g * 256;

console.log(r, g, b);

function rgbToHex (r, g, b) {  
    r = r.toString(16);
    g = g.toString(16);
    b = b.toString(16);

    if (r.length == 1) r = '0' + r;
    if (g.length == 1) g = '0' + g;
    if (b.length == 1) b = '0' + b;

    return (r + g + b).toUpperCase();
}

console.log(rgbToHex(r, g, b));

您可以在这里检查: http://www.endprod.com/colors/

反向:

function hexToRgb (hex) {
    var result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex);
    return result ? {
        r: parseInt(result[1], 16),
        g: parseInt(result[2], 16),
        b: parseInt(result[3], 16)
    } : null;
}

const rgbToDec = (r, g, b) => (b * 2 ** 16) + (g * 2 ** 8) + r;