我试图提取UIColor
的rgb组件,以手动构建CGBitmapContext
中的像素。以下示例代码适用于大多数UIColor
常量,但不是全部都可以。即:上述获取某些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);
为[UIColor yellowColor]
的结果是
R =1.000000克= 1.000000 B = 0.000000 A = 1.000000, 如预期。
[UIColor redColor]
给出 r = 1.000000 g = 0.000000 b = 0.000000 a = 1.000000, 也如预期的那样。同样对于blueColor
和greenColor
。
然而,为[UIColor blackColor]
和[UIColor whiteColor]
结果似乎完全正常的,我不知道我做错了什么(如果确实是我)。
要机智,[UIColor blackColor]
给出 R =0.000000克= 1.000000 B = 0.000000 A = 0.000000, 其是tranparent绿色,
和[UIColor whiteColor]
给出 R =1.000000克= 1.000000 B = 0.000000 A = 0.000000 , 这是一个透明的黄色。
我会很感激,如果有人既可以:
(1)解释我在做什么错
(2)复制我的反常结果,并告诉我,这不是我,或者
(3)用一把大锤撞击我的头部,所以它不会那么伤害。
霍华德
太棒了!谢谢。在调用`CGColorGetComponents(color)`之前,我经常被CGColorGetNumberOfComponents(color)`引用困惑。现在我明白了为什么。顺便说一下,是不是有办法打印上面模型的*名称,而不仅仅是它的价值? – hkatz 2009-05-20 12:51:29