hka*_*atz 11 iphone core-graphics cgcolor uicolor
我正在尝试提取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);
Run Code Online (Sandbox Code Playgroud)
[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)用大锤击中我的头部,这样它就不会伤到这么多.
霍华德
pgb*_*pgb 10
您假设颜色空间始终是RGBA,但事实并非如此.
试试这段代码:
CGColorRef color = [[UIColor blackColor] CGColor];
const CGFloat* rgba = CGColorGetComponents(color);
CGColorSpaceRef space = CGColorGetColorSpace(color);
CGColorSpaceModel model = CGColorSpaceGetModel(space);
NSLog(@"%d", model);
Run Code Online (Sandbox Code Playgroud)
而模型将产生kCGColorSpaceModelMonochrome.
| 归档时间: |
|
| 查看次数: |
3161 次 |
| 最近记录: |