【发布时间】:2013-02-15 10:20:16
【问题描述】:
我已尝试多次将使用 colorWithPatternImage 的图像创建的 NSColor 来回转换为 CGColor。它总是失败,我得到奇怪的坏结果。
我想知道转换是否适用于平铺图像生成的颜色,或者根本不可能。这就是我转换颜色的方式:
-(CGColorRef) CIColorToCGColor: (CIColor *) ciColor {
CGColorSpaceRef colorSpace = [ciColor colorSpace];
const CGFloat *components = [ciColor components];
CGColorRef cgColor = CGColorCreate (colorSpace, components);
CGColorSpaceRelease(colorSpace);
return cgColor;
}
...
CIColor *ciColor = [[CIColor alloc] initWithColor: [NSColor colorWithPatternImage:backgroundImage]];
CGColorRef cgColor = [self CIColorToCGColor: ciColor];
[ciColor release];
【问题讨论】:
-
为什么要先将
NSColor转换为CIColor?NSColor有一个方法CGColor,那不行吗? -
你怎么知道结果不对?
-
@MartinR 该方法仅在 Mountain Lion 中可用
-
@RamyAlZuhouri 这就是它的样子:cl.ly/image/3r2d3C0I2b1C
-
@Patrick 一张图片可能有多种颜色,这样你只需要它的一个像素。
标签: objective-c cocoa