Formule de Color.toRGB();

Le
frederic.gros
Bonjour à tous.

Je recherche la formule de la méthode toRGB() de la classe COLOR.
Cette méthode permet de convertir une instance de Color en un int.
Je pensais qu'il s'agissait d'une formule du type

int rgba = (alpha << 24) | (red << 16) | (green << 8) | blue;

mais le programme si dessous (et des nombreux essais) me prouve le contraire.

public class Test
{
public static void main(String[] args)
{
int c1 = new Color(0, 0, 0).getRGB();
int c2 = new Color(255, 0, 0).getRGB();
int c3 = new Color(0, 255, 0).getRGB();
int c4 = new Color(0, 0, 255).getRGB();

System.out.println(c1 + "" + c2 + "" + c3 + "" + c4);
}
}

SORTIE :

-16777216
-65536
-16711936
-16776961

Par avance merci pour votre aide.
Frédéric Gros.
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Farid
Le #645403
en regardant le source de la classe color:

/**
* Creates an opaque sRGB color with the specified red, green,
* and blue values in the range (0 - 255).
* The actual color used in rendering depends
* on finding the best match given the color space
* available for a given output device.
* Alpha is defaulted to 255.
* @param r the red component
* @param g the green component
* @param b the blue component
* @see #getRed
* @see #getGreen
* @see #getBlue
* @see #getRGB
*/
public Color(int r, int g, int b) {
this(r, g, b, 255);
}

public Color(int r, int g, int b, int a)
{
value = ((a & 0xFF) << 24) | ((r & 0xFF) << 16) | ((g & 0xFF) << 8) |
((b & 0xFF) << 0);
...
}

avec a%5.

donc le getRGB te retourne ARGB.
si tu ne veux pas de la component Alpha, tu la mask: getRGB()&0xFFFFFF

Farid.

"Sma" news:
Bonjour à tous.

Je recherche la formule de la méthode toRGB() de la classe COLOR.
Cette méthode permet de convertir une instance de Color en un int.
Je pensais qu'il s'agissait d'une formule du type

int rgba = (alpha << 24) | (red << 16) | (green << 8) | blue;

mais le programme si dessous (et des nombreux essais) me prouve le
contraire.


public class Test
{
public static void main(String[] args)
{
int c1 = new Color(0, 0, 0).getRGB();
int c2 = new Color(255, 0, 0).getRGB();
int c3 = new Color(0, 255, 0).getRGB();
int c4 = new Color(0, 0, 255).getRGB();

System.out.println(c1 + "n" + c2 + "n" + c3 + "n" + c4);
}
}

SORTIE :

-16777216
-65536
-16711936
-16776961

Par avance merci pour votre aide.
Frédéric Gros.


frederic.gros
Le #648450
Merci pour ton aide.
Je ne me souvenais plus que les sources de swing sont disponibles.
A+.
Publicité
Poster une réponse
Anonyme