15

我有一个整数,需要将其转换为 javascript 中的颜色。我正在使用 MVC 模型,并试图在 Web 界面的软件中复制模型。我有数据库中整数格式的颜色。它需要在javascript中转换为颜色。

例如:整数,如 -12525360、-5952982

我有这样的代码:

items[x].barStyle = "stroke: Black; fill = Red";

因此,我需要给它对应于整数值的确切颜色,而不是填充:红色。

这是我用 C# 编写的代码。我在javascript中需要同样的东西。这里 resourcecolor= 整数输入。

     var bytes = BitConverter.GetBytes(resourcecolor);
     ti.color = Color.FromArgb(bytes[3], bytes[2], bytes[1], bytes[0]);
4

5 回答 5

26

在 javascript 中,您将要与 canvas 或 css 一起使用的 ARGB 颜色表示为字符串,例如"rgba(0-255,0-255,0-255,0-1)".

您可以使用此函数将整数转换为该字符串格式:

function toColor(num) {
    num >>>= 0;
    var b = num & 0xFF,
        g = (num & 0xFF00) >>> 8,
        r = (num & 0xFF0000) >>> 16,
        a = ( (num & 0xFF000000) >>> 24 ) / 255 ;
    return "rgba(" + [r, g, b, a].join(",") + ")";
}
toColor(-5952982)
//"rgba(165,42,42,1)"
toColor(-12525360)
//"rgba(64,224,208,1)"

演示:http: //jsfiddle.net/Ectpk/

于 2012-08-08T14:40:52.743 回答
7

尝试:

hexColor = yourNumber.toString(16)

您可能也想规范化“yourNumber”。

于 2012-08-08T14:34:03.173 回答
6

真的很简单:

colorString = "#" + colour.toString(16).padStart(6, '0');

但是当我实际引用它时,我也会从整数中删除 alpha 并同时设置样式颜色,所以整行是:

document.getElementById('selectColourBtn').style.color = "#" +
    (colour & 0x00FFFFFF).toString(16).padStart(6, '0');
于 2019-01-28T17:16:54.147 回答
1

披露:我是下面建议的图书馆的作者。

如果您想使用库而不是自己编写代码,pusher.color Javascript 库支持整数到 HTML 颜色转换:

// Will set c to "rgba(105,80,131,1.0)"
var c = pusher.color('packed_argb', -9875325).html()

或者,如果您想要不同的格式:

var colorObject = pusher.color('packed_argb', -9875325);
var htmlString = colorObject.html();          // i.e. "rgba(105,80,131,1.0)"
var colorName  = colorObject.html('keyword'); // closest named color
var hexString  = colorObject.html('hex6');    // "#695083"

该库在内部使用与Esailija 的答案非常相似的代码。

于 2012-08-09T20:47:17.507 回答
1

阅读有关该问题的评论,您似乎能够在服务器上的值发送到客户端之前对其进行操作。如果您使用的是 .NET,我建议使用ColorTranslator

int intColor = -12525360;
string htmlColor = ColorTranslator.ToHtml(Color.FromArgb(intColor)); //#40E0D0

或者这个(如果你需要 alpha 通道):

   int intColor = -12525360;
   Color c = Color.FromArgb(intColor);
   string htmlColor = String.Format(CultureInfo.InvariantCulture, 
                        "rgba({0},{1},{2},{3})", c.R, c.G, c.B, c.A / 255f);
于 2012-08-08T14:57:05.580 回答