Code couleurs RGB

Signaler
Messages postés
3
Date d'inscription
lundi 9 mai 2005
Statut
Membre
Dernière intervention
19 mars 2007
-
Messages postés
3
Date d'inscription
lundi 9 mai 2005
Statut
Membre
Dernière intervention
19 mars 2007
-
Bonjour, j'utilise la methode getColor de la classe graphics,
et cette méthode me renvoie un entier :

public int getColor()

Gets the current color.

Returns:
an integer in form 0x00RRGGBB

J'aimerais retrouver le code couleur (r,g,b) (par exemple (255,255,255) pour le blanc) à partir du code 0x00RRGGBB.

Connaissez vous l'algorithme qui permet ca??

Merci :)

3 réponses

Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
96
Salut,



Cette méthode devrait marcher :

Color couleur = new Color(g.getColor());

int red = couleur.getRed();

int green = couleur.getGreen();

int blue = couleur.getBlue();



Ou sinon, tu peux décomposer ta valeur hexa (en vb ca donne) :

Let RedValue = (LNG_Couleur And &HFF)

Let GreenValue = ((LNG_Couleur \ 256) And &HFF)

Let BlueValue = ((LNG_Couleur \ 65536) And &HFF)

_____________________________________________________________________
DarK Sidious

Un API Viewer (pour le VB, VB.NET, C, C# et Delphi) tout en français : www.ProgOtoP.com/popapi/
Messages postés
7
Date d'inscription
samedi 16 août 2003
Statut
Membre
Dernière intervention
9 décembre 2005

Hello,



Dark Sidious a donné la solution avec l'utilisation de la classe Color,
par contre la décomposition de l'entier est en VB. La voici en Java
ci-dessous :




public static void main(String[] args)

{

int color = 0x00FFFEFD;



int red = (color & 0x00FF0000) >> 16;

int green = (color & 0x0000FF00) >> 8;

int blue = (color & 0x000000FF);



System.out.println(red);

System.out.println(green);

System.out.println(blue);



Color c = new Color(color);

System.out.println(c);

}



Résultat sur la console :

255

254

253

java.awt.Color[r=255,g=254,b=253]



Explications :

Pour extraire les valeurs, il faut penser en
bits et utiliser les opérateurs de manipulation de bits. On commence
par appliquer des masques sur l'entier représentant la couleur pour
isoler les valeurs souhaitées (0x00FF0000,
0x0000FF00 et
0x000000FF). Puis on fait un décalage binaire pour avoir un nombre compris entre 0 et 255. Et hop!



Tchuss!
Messages postés
3
Date d'inscription
lundi 9 mai 2005
Statut
Membre
Dernière intervention
19 mars 2007

Merci beaucoup à vous 2 pour vos reponses!