2010-06-23 58 views
4

检查出码White颜色为RGB不正确

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

C [2]是越来越0。对于所有whiteColor RGB值SHLD为1.0。为什么它不能为蓝色组件返回正确的值?

任何代码片段?从白色获取RGB值?

回答

8

尝试CGColorGetColorSpace([[UIColor whiteColor] CGColor])

你会看到它是不是RGB。它只有2个分量:灰度和α-

+0

如何获取RGB值呢? – coure2011 2010-06-23 10:58:38

+0

用于白色的颜色空间是灰度(1个分量和alpha)。要从灰度色彩中获取RGB值,必须使用R,G和B的灰度值。 – 2010-06-23 11:19:52

+0

您可以给出一些代码吗? – coure2011 2010-06-23 11:30:18

0

该代码段应与RGB和灰度工作:

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

使用以下代码: CGContextSetFillColorWithColor(CTX,[的UIColor whiteColor] .CGColor);

适用于颜色和灰度。