RGB的白色不正确

时间:2010-06-23 10:23:26

标签: objective-c iphone

查看代码

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

c [2]变为0.对于whiteColor,所有RGB值都为1.0。为什么它没有为蓝色组件返回正确的值?

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

3 个答案:

答案 0 :(得分:8)

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

你会看到它不是RGB。它只有2个组件:灰度和alpha

答案 1 :(得分:1)

使用此代码: CGContextSetFillColorWithColor(ctx,[UIColor whiteColor] .CGColor);

使用颜色和灰度。

答案 2 :(得分: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];
}