代码之家  ›  专栏  ›  技术社区  ›  Chunky Chunk

计算十六进制颜色的相反(“差”)的公式

  •  1
  • Chunky Chunk  · 技术社区  · 14 年前

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

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

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

    2 回复  |  直到 12 年前
        1
  •  7
  •   Matt Mitchell    14 年前

    就像蜘蛛侠说的,只需要使用0xFFFFFF-COLOR。

    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
  •  7
  •   Spidey    14 年前

    只需做0xFFFFFF颜色。