2010-03-28 4 views

Répondre

36

Si je devine juste, ce que vous obtenez en retour est un entier non signé de la forme 0xAARRGGBB, si

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

extrairaient les composantes de couleur. Cependant, un coup d'œil à la docs dit que vous pouvez juste faire

Color c = new Color(argb); 

ou

Color c = new Color(argb, true); 

si vous voulez que le composant alpha dans la couleur aussi.

MISE À JOUR

composantes rouge et bleue sont inversées en réponse originale, de sorte que la bonne réponse sera:

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

Patates douces! –

+8

Je suppose que vous avez inversé le rouge et le bleu ici ... – Gevorg

+0

@Gevorg: Peut-être. Mais c'est assez évident à remarquer lors du test du code. :) – 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 

Est-ce ce que vous voulez dire?

Questions connexes