2010-06-23 10 views
4

Vérifiez le codeCouleur Blanc à RVB correct

const CGFloat *c = CGColorGetComponents([[UIColor whiteColor] CGColor]); 
slider1.value = c[0]; 
slider2.value = c[1]; 
slider3.value = c[2]; 

c [2] devient 0. Pour whiteColor toutes les valeurs RVB SHLD 1,0. Pourquoi ne pas retourner la valeur correcte pour le composant bleu?

Un extrait de code? pour obtenir des valeurs RVB de couleur blanche?

Répondre

8

Essayez CGColorGetColorSpace([[UIColor whiteColor] CGColor])

Vous verrez que ce n'est pas RVB. Il dispose de 2 composants seulement: alpha et nuances de gris

+0

comment obtenir des valeurs RVB alors? – coure2011

+0

L'espace de couleur utilisé pour le blanc est l'échelle de gris (1 composante et alpha). Pour obtenir des valeurs RVB à partir de la couleur en niveaux de gris, vous devez utiliser la valeur d'échelle de gris pour R, G et B. –

+0

Pouvez-vous donner un code? – coure2011

0

Ce bout de code devrait fonctionner avec RVB et en niveaux de gris:

CGFloat *components = (CGFloat *) CGColorGetComponents(<UIColor instance>.CGColor); 
if(CGColorGetNumberOfComponents(<UIColor instance>.CGColor) == 2) 
{ 
    //assuming it is grayscale - copy the first value 
    components[2] = components[1] = components[0]; 
} 
1

Utilisez ce code: CGContextSetFillColorWithColor (CTX, [UIColor whiteColor] .CGColor);

Fonctionne avec les couleurs et les niveaux de gris.

Questions connexes