是否有 NSColor 的“免费桥接”Core Foundation 对应版本?
CGColorRef
似乎不喜欢 NSColor
,反之亦然?
基本上,我们希望从存储实际 r/g/b/a 值的 C++ 包装器/框架类创建 NSColor(或兼容)对象。我知道我们可以使用 Objective-C++,但留在 C++ 世界会更好!
非常感谢任何提示。
最佳答案
您可以将 CGColorRef
转换为 NSColor
,如下所示:
CGColorRef cgColor = ...;
NSColorSpace *colorSpace = [[[NSColorSpace alloc] initWithCGColorSpace:CGColorGetColorSpace(cgColor)] autorelease];
NSColor *nsColor = [NSColor colorWithColorSpace:colorSpace
components:CGColorGetComponents(cgColor)
count:CGColorGetNumberOfComponents(cgColor)];
如果您经常使用它,最好将其放入 NSColor
类别方法中。
如果您的颜色全部位于 RGBA 颜色空间中,则在 C++ 代码中使用简单的 struct
并使用 colorWithCaliberatedRed:green:blue:alpha:
可能会更容易> 用于转换。
关于cocoa - NSColor 核心粉底对应?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9239274/