【问题标题】:Formula For calculating opposite ("Difference") for hexadecimal color用于计算十六进制颜色的相反(“差异”)的公式
【发布时间】:2011-03-09 22:21:28
【问题描述】:

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

这需要按位运算符吗?也许每个数字的循环来计算它从 0 到 15 或 0 到 F 的镜像(0 变为 F,6 变为 9,等等)

我正在使用 ActionScript,所以我几乎可以肯定这在 Java 中会以同样的方式完成。

【问题讨论】:

  • 更新示例。这些格式现在都应该正确地用零填充,但我从来没有使用过 ActionScript/没有解释器,所以它可能会在某个地方稍微偏离。

标签: java actionscript-3 colors hex


【解决方案1】:

正如蜘蛛侠所说,只需使用 0xFFFFFF - 颜色。

在 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");

在 Java 中:

int color = 0x002233;
String hex = String.format("06X", (0xFFFFFF - color)); 

在 C# 中:

int color = 0x002233;
string hex = (0xFFFFFF - color).ToString("X").PadLeft(6, '0');

【讨论】:

    【解决方案2】:

    只需执行 0xFFFFFF - 颜色。

    【讨论】:

    • 现在我很高兴我没有创建循环函数。您指出的如此明显的解决方案。多么尴尬! :)
    • 不,它一直在发生。
    猜你喜欢
    • 2014-03-16
    • 1970-01-01
    • 2012-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-04
    • 2014-07-03
    相关资源
    最近更新 更多