Формула для расчета противоположного ("Разница") для шестнадцатеричного цвета - PullRequest
1 голос
/ 30 июня 2010

Как я могу создать противоположность шестнадцатеричного цвета?Например, я хотел бы преобразовать 0x000000 (черный) в 0xFFFFFF (белый) или 0xFF0000 (красный) в 0x00FFFF (голубой).Это довольно простые цвета, в то время как варианты цветов могут иметь более сложные шестнадцатеричные значения, такие как 0x21B813 (зеленоватый).

Требуются ли для этого побитовые операторы?Возможно цикл каждой цифры для вычисления ее зеркала от 0 до 15 или от 0 до F (0 становится F, 6 становится 9 и т. Д.)

Я использую ActionScript, так что я почти уверен, чтоэто будет сделано так же в Java.

Ответы [ 2 ]

7 голосов
/ 30 июня 2010

Как говорит Spidey, просто используйте 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");

В Java:

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

В C #:

int color = 0x002233;
string hex = (0xFFFFFF - color).ToString("X").PadLeft(6, '0');
7 голосов
/ 30 июня 2010

Просто сделайте 0xFFFFFF - ЦВЕТ.

...