【发布时间】:2012-02-18 19:49:45
【问题描述】:
是否可以从另一种颜色中减去一种颜色?
示例(如果我错了,请纠正我):
如果我从 white 中减去 red 和 green,我期待 结果是蓝色。
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"
【问题讨论】:
-
你是怎么做减法的?您使用的是 RGB 还是 CMYK,您是在混合颜色还是光?
-
直接减法不起作用。考虑
0xCC3366 - 0xDD0011->0xFFFF FFFF FFEF 3355。另一方面,您的 65535 只是 0xFFFF 的十进制(以 10 为底)表示 - 一个简单的基本转换将为您提供 FFFF 用于显示目的,但内部两个数字是相同的 -
65535 == 0x00FFFF是true,您的第一种方法有效,您正在减去 RGB 颜色。 -
@TJHeuvel,我同意你关于用 CMYK 减色的观点,因为减色系统通常使用青色、品红色和黄色染料光谱过滤器,因为青色、品红色和黄色过滤器是“陷波”过滤器,它允许比窄带红色、绿色或蓝色“带通”滤光片具有更大的光能传输。因此,颜色减法比分段减法和地板更复杂。您对用于航空航天应用的 CMYK 减色系统有何看法?
标签: javascript jquery html canvas html5-canvas