Sto cercando di estrarre i componenti rgb di un UIColor
per creare manualmente i pixel in un CGBitmapContext
. Il seguente codice di esempio funziona bene per la maggior parte delle costanti UIColor
ma, in modo confuso, non tutte. Vale a dire:Risultati anomali che ottengono componenti di colore di alcuni 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);
I risultati per [UIColor yellowColor]
sopra sono
r = 1.000000 g = 1.000000 b = 0.000000 a = 1.000000, come previsto.
[UIColor redColor]
dà r = 1.000000 g = 0.000000 b = 0.000000 a = 1.000000, nuovamente come previsto. Allo stesso modo per blueColor
e greenColor
.
Tuttavia, i risultati per [UIColor blackColor]
e [UIColor whiteColor]
sembrano completamente anomala, e non so cosa sto facendo male (se davvero io sono).
Vale a dire, [UIColor blackColor]
dà r = 0.000000 g = 1.000000 b = 0.000000 a = 0.000000, che è un tranparent verde,
e [UIColor whiteColor]
dà r = 1.000000 g = 1.000000 b = 0.000000 a = 0.000000 , che è un giallo trasparente.
sarei grato se qualcuno potrebbe o:
(1) spiegare che cosa sto facendo male
(2) replicare i miei risultati anomali e dimmi che non sono io, o
(3) colpiscimi sopra la testa con un grosso martello in modo che smetta di ferire così tanto.
Howard
Brillante! Grazie. Sono stato confuso prima dal riferimento frequente a 'CGColorGetNumberOfComponents (color)' prima di chiamare 'CGColorGetComponents (color)'. Ora capisco perché. A proposito, non c'è un modo per stampare il * nome * del modello qui sopra, e non solo il suo valore? – hkatz
Il debugger ti mostrerà il nome, non sono sicuro che tu possa stamparlo, poiché è una definizione const di un numero. – pgb