Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Formule de Color.toRGB();

2 réponses
Avatar
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 + "\n" + c2 + "\n" + c3 + "\n" + c4);
}
}

SORTIE :

-16777216
-65536
-16711936
-16776961

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

2 réponses

Avatar
Farid
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" wrote in message
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.


Avatar
frederic.gros
Merci pour ton aide.
Je ne me souvenais plus que les sources de swing sont disponibles.
A+.