2010-03-28 6 views

Antwort

36

Wenn ich richtig erraten, bekommen Sie zurück, was eine ganze Zahl ohne Vorzeichen des Formulars 0xAARRGGBB, so

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

die Farbkomponenten extrahieren würde. Jedoch sagt ein kurzer Blick auf die docs, dass Sie nur

tun können
Color c = new Color(argb); 

oder

Color c = new Color(argb, true); 

, wenn Sie die Alpha-Komponente in der Farbe als auch wollen.

UPDATE

Rote und blaue Komponenten in Original Antwort invertiert werden, so dass die richtige Antwort wird sein:

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

Süßkartoffeln! –

+8

Ich denke, Sie invertiert rot und blau hier ... – Gevorg

+0

@Gevorg: Könnte sein. Aber das ist ziemlich offensichtlich, wenn Sie den Code testen. :) – 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()); 

druckt:

0 
200 
0 
255 

Ist das Was meinst du?

Verwandte Themen