2010-06-30 18 views
1

Comment puis-je créer le contraire d'une couleur hexadécimale? Par exemple, je voudrais convertir 0x000000 (noir) en 0xFFFFFF (blanc), ou 0xFF0000 (rouge) en 0x00FFFF (cyan). Ce sont des couleurs plutôt basiques, tandis que les variantes de couleurs peuvent avoir des valeurs hexadécimales plus complexes, comme 0x21B813 (verdâtre).Formule Pour calculer l'inverse ("Différence") pour la couleur hexadécimale

Des opérateurs de bits sont-ils requis pour cela? Peut-être une boucle de chaque chiffre pour calculer son miroir de 0 à 15, ou 0 à F (0 devient F, 6 devient 9, etc.)

J'utilise ActionScript, donc je suis presque certain que cela serait être fait de la même manière en Java.

+0

exemple mis à jour. Les formats devraient tous être remplis correctement avec des zéros maintenant mais je n'ai jamais utilisé ActionScript/je n'ai pas d'interprète donc ça pourrait être quelque peu décalé quelque part. –

Répondre

5

Comme le dit Spidey, il suffit d'utiliser 0xFFFFFF - COLOR.

Dans ActionScript, vous feriez quelque chose comme:

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

En Java:

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

En C#:

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

Juste faire 0xFFFFFF - COULEUR.

+1

maintenant je suis content que je n'ai pas créé une fonction de boucle. une solution évidente que vous avez indiquée. que c'est embarrassant! :) – TheDarkIn1978

+0

Nah, ça arrive tout le temps. – Spidey