我试图在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应为橙色,但它是蓝色
答案 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。