是否可以从另一种颜色中减去颜色?
示例(如果我错了,请纠正我):
如果我从白色中减去红色和绿色,我希望 结果是蓝色。
var white = 0xFFFFFF,
red = 0xFF0000,
result = white - red;
console.log(result); //65535 <-- what is that ? can it be converted to 0x00FFFF ?
感谢Rocket's answer,我发现需要function()
才能将结果转换为实际颜色。
以下是最后的工作示例:
var toColor = function ( d ) {
var c = Number(d).toString(16);
return "#" + ( "000000".substr( 0, 6 - c.length ) + c.toUpperCase() );
},
white = 0xFFFFFF,
red = 0xFF0000,
green = 0x00FF00,
result = toColor( white - red - green );
console.log( result ); // logs the expected result: "#0000FF"
答案 0 :(得分:7)
您的white-red
工作正常,只是JavaScript将值表示为基数为10的值。您需要将它们转换回基数16(十六进制)。查看this answer,将值转换回十六进制。
var white = 0xFFFFFF, // Stored as 16777215
red = 0xFF0000, // Stored as 16711680
result = white - red; // 16777215 - 16711680 = 65535
console.log(result); // It's stored as base 10, so it prints 65535
var resultHex = result.toString(16); // 'ffff', converted back to hex
答案 1 :(得分:6)
我只是假设您正在使用RGB,因为还有很多其他方法可以混合颜色。您必须将颜色表示为3 *个不同的部分,R G和B.
// R G B
var white = [ 1, 1, 1];
var red = [ 0, 0, 0 ];
var result = [ white[0] - red[0], white[1] - red[1], white[2] - red[2] ;
要减去颜色的每个组成部分,然后将其转换回十六进制。
*您可能希望稍后在
添加Alpha