2010-03-28 9 views

risposta

36

Se sto cercando di indovinare a destra, quello che si ottiene indietro è un numero intero senza segno della forma 0xAARRGGBB, così

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

sarebbe estrarre i componenti di colore. Tuttavia, un rapido sguardo alla docs dice che si può solo fare

Color c = new Color(argb); 

o

Color c = new Color(argb, true); 

se si desidera che il componente alfa nel colore pure.

UPDATE

componenti Rosso e Blu sono invertiti in risposta originale, quindi la risposta giusta sarà:

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

Patate dolci! –

+8

Immagino che tu abbia invertito il rosso e il blu qui ... – Gevorg

+0

@Gevorg: Potrebbe essere. Ma è abbastanza ovvio da notare quando si prova il codice. :) – 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()); 

stampe fuori:

0 
200 
0 
255 

È che Cosa vuoi dire?

Problemi correlati