J'essaie d'extraire les composants rgb d'un UIColor
afin de construire manuellement les pixels dans un CGBitmapContext
. L'exemple de code suivant fonctionne correctement pour la plupart des constantes UIColor
mais, pas de confusion, pas tous. A savoir:Résultats anormaux obtenant des composants de couleur de certains UIColors
CGColorRef color = [[UIColor yellowColor] CGColor];
const float* rgba = CGColorGetComponents(color);
float r = rgba[0];
float g = rgba[1];
float b = rgba[2];
float a = rgba[3];
NSLog(@"r=%f g=%f b=%f a=%f", r, g, b, a);
Les résultats ci-dessus sont pour [UIColor yellowColor]
r = 1,000000 g = 1,000000 b = 0,000000 a = 1,000000, comme prévu.
[UIColor redColor]
donne r = 1,000000 g = 0,000000 b = 0,000000 a = 1,000000, à nouveau comme prévu. De même pour blueColor
et greenColor
.
Cependant, les résultats pour [UIColor blackColor]
et [UIColor whiteColor]
semble tout à fait anormale, et je ne sais pas ce que je fais mal (si je suis en effet).
À savoir, [UIColor blackColor]
donne r = 0,000000 g = 1,000000 b = 0,000000 a = 0,000000, qui est un vert tranparent,
et [UIColor whiteColor]
donne r = 1,000000 g = 1,000000 b = 0,000000 a = 0,000000 , qui est un jaune transparent.
Je serais reconnaissant si quelqu'un pouvait soit:
(1) expliquer ce que je fais mal
(2) de reproduire mes résultats anormaux et me dire que c'est pas moi, ou
(3) Frappez-moi sur la tête avec un gros marteau pour que ça cesse de me faire tellement mal.
Howard
Brillant! Je vous remercie. J'ai déjà été troublé par la référence fréquente à 'CGColorGetNumberOfComponents (color)' avant d'appeler 'CGColorGetComponents (color)'. Maintenant je vois pourquoi. En passant, n'y a-t-il pas moyen d'imprimer le * nom * du modèle ci-dessus, et pas seulement sa valeur? – hkatz
Le débogueur vous montrera le nom, je ne suis pas sûr que vous pouvez l'imprimer, puisqu'il s'agit d'une définition constante d'un nombre. – pgb