2010-03-28 19 views

Respuesta

36

Si supongo derecha, lo que recibe es un entero sin signo de la forma 0xAARRGGBB, por lo

int r = (argb)&0xFF; 
int g = (argb>>8)&0xFF; 
int b = (argb>>16)&0xFF; 
int a = (argb>>24)&0xFF; 

sería extraer los componentes de color. Sin embargo, un rápido vistazo a la docs dice que sólo puede hacer

Color c = new Color(argb); 

o

Color c = new Color(argb, true); 

si desea que el componente alfa en el color también.

ACTUALIZACIÓN

componentes rojo y azul se invierten en respuesta original, por lo que la respuesta correcta serán:

int r = (argb>>16)&0xFF; 
int g = (argb>>8)&0xFF; 
int b = (argb>>0)&0xFF; 
+2

¡Papas dulces! –

+8

Supongo que invertiste rojo y azul aquí ... – Gevorg

+0

@Gevorg: Podría ser. Pero eso es bastante obvio para notar al probar el código. :) – AKX

23
Color c = new Color(-16726016, true); 
    System.out.println(c.getRed()); 
    System.out.println(c.getGreen()); 
    System.out.println(c.getBlue()); 
    System.out.println(c.getAlpha()); 

imprime:

0 
200 
0 
255 

es eso ¿A qué te refieres?

Cuestiones relacionadas