Java 十六进制颜色的“差”计算公式

Java 十六进制颜色的“差”计算公式,java,actionscript-3,colors,hex,Java,Actionscript 3,Colors,Hex,如何创建十六进制颜色的对立面?例如,我想将0x000000(黑色)转换为0xFFFFFF(白色),或将0xFF0000(红色)转换为0x00FFFF(青色)。这些是相当基本的颜色,而颜色的变体可以有更复杂的十六进制值,例如0x21B813(绿色) 这需要位运算符吗?可能是每个数字的一个循环来计算它的镜像,从0到15,或者从0到F(0变成F,6变成9,等等) 我使用的是ActionScript,所以我几乎可以肯定在Java中也会使用相同的方法。只需使用0xFFFFFF-COLOR。只需使用0xFF

如何创建十六进制颜色的对立面?例如,我想将0x000000(黑色)转换为0xFFFFFF(白色),或将0xFF0000(红色)转换为0x00FFFF(青色)。这些是相当基本的颜色,而颜色的变体可以有更复杂的十六进制值,例如0x21B813(绿色)

这需要位运算符吗?可能是每个数字的一个循环来计算它的镜像,从0到15,或者从0到F(0变成F,6变成9,等等)


我使用的是ActionScript,所以我几乎可以肯定在Java中也会使用相同的方法。

只需使用0xFFFFFF-COLOR。

只需使用0xFFFFFF-COLOR。

正如Spidey所说,只需使用0xFFFF-COLOR即可

在ActionScript中,您可以执行以下操作:

public static function pad(str:String, minLength:uint, pad:String):String { 
    while (str.length < minLength) str = pad + str; 
    return str; 
} 

var color:Number=0x002233;
var hexColorStr:String = "#" + pad((0xFFFFFF-color).toString(16), 6, "0");
在C#中:


正如蜘蛛侠所说,只需使用0xFFFFFF-COLOR

在ActionScript中,您可以执行以下操作:

public static function pad(str:String, minLength:uint, pad:String):String { 
    while (str.length < minLength) str = pad + str; 
    return str; 
} 

var color:Number=0x002233;
var hexColorStr:String = "#" + pad((0xFFFFFF-color).toString(16), 6, "0");
在C#中:


更新的示例。这些格式现在应该都正确地用零填充,但我从来没有使用过ActionScript/没有解释器,所以它可能会在某个地方稍微关闭。更新的示例。这些格式现在应该都正确地用零填充,但是我从来没有使用过ActionScript/没有解释器,所以它可能会在某个地方稍微关闭。现在我很高兴我没有创建循环函数。你已经指出了一个显而易见的解决方案。多尴尬啊!:)不,这种情况经常发生。现在我很高兴我没有创建循环函数。你已经指出了一个显而易见的解决方案。多尴尬啊!:)不,这种事经常发生。
int color = 0x002233;
string hex = (0xFFFFFF - color).ToString("X").PadLeft(6, '0');