Javascript

时间:2016-06-12 00:43:06

标签: javascript java colors rgba

我试图在Javascript中使用数据库中的一些Java Color int值。使用Javascript将Java颜色int(如-2147473665)转换为RGB字符串(如' #ffff00')的正确方法是什么?将它们直接转换为十六进制使它们都是深蓝色或黑色......

(编辑)第一个答案有帮助,现在我得到的颜色不是黑色,但它们仍然不是正确的色调。 (我知道Google Maps API采用的是RGB,而不是HSV,所以它不是......)

function getClients() {
  var query = new Parse.Query(Client);

  query.each(function(client) {
    var clientName = client.get("clientName");
    var borderColor = '#' + (-client.get("borderColor")).toString(16);
    var fillColor = '#' + (-client.get("fillColor")).toString(16).substr(2);
    var outline = client.get("outline");

    console.log(client.get("borderColor"));
    console.log(client.get("borderColor").toString(16));
    console.log(hexToRGB(client.get("borderColor")));

    var clientPoly = new google.maps.Polygon({
      paths: outline,
      strokeColor: borderColor,
      strokeOpacity: 1,
      strokeWeight: 2,
      fillColor: fillColor,
      fillOpacity: 0.5
    });

    clientPoly.setMap(mMap);
  });
}

例如,int -16767233应为深蓝色,但它显示为黄色。

-16731137应该是淡蓝色,但它是红色的

-1218518应为橙色,但它是蓝色

正确的颜色: Correct colors

这是我用JS获取的当前代码 This is what I get in JS with my current code

2 个答案:

答案 0 :(得分:2)

是的,您可以将int转换为十六进制,如下所示:

var num = 2147473665;

var hexString = num.toString(16);

十六进制字符串现在为7FFFD901

var alphalessHexString = hexString.substr(2, 6)

alphalessHexString现在是FFD901

将它们放在一行中:

var num = 2147473665;
var alphalessHexString = num.toString(16).substr(2, 6)

alphalessHexString现在是FFD901

答案 1 :(得分:0)

如果您有彩色ARGB,那么您需要做的是

  int hx=-16767233 & 0x00ffffff;
  g2.setColor(new Color(hx));
  g2.fillRect(0, 0, w, h);

现在hx是没有alpha的RGB。