我正在尝试提取 a 的 rgb 组件,UIColor
以便手动构建 a 中的像素CGBitmapContext
。以下示例代码适用于大多数UIColor
常量,但令人困惑的是,并非全部。以机智:
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 g=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 g=1.000000 b=0.000000 a=0.000000,这是一个透明的绿色,
并[UIColor whiteColor]
给出 r=1.000000 g=1.000000 b=0.000000 a=0.000000,这是一种透明的黄色。
如果有人可以,我将不胜感激:
(1) 解释我做错了什么
(2) 复制我的异常结果并告诉我不是我,或者
(3) 用大锤子敲打我的头,这样它就不会那么痛了。
霍华德