【问题标题】:NSColor Core Foundation counterpart?NSColor Core Foundation 对应?
【发布时间】:2012-02-11 09:52:10
【问题描述】:

是否有 NSColor 的“免费桥接”Core Foundation 对应项?

CGColorRef 似乎不喜欢NSColor,反之亦然?

基本上,我们希望从存储实际 r/g/b/a 值的 C++ 包装器/框架类创建 NSColor(或兼容)对象。我知道我们可以使用 Objective-C++,但最好留在 C++ 世界!

非常感谢任何提示。

【问题讨论】:

    标签: cocoa macos-carbon core-foundation


    【解决方案1】:

    您可以像这样将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 并使用colorWithCalibratedRed:green:blue:alpha: 进行转换可能会更容易。

    【讨论】:

    • 谢谢 - 是的,我想我们将使用一个 NSColor 类别,它直接从我们的包装类初始化一个新的 NSColor 对象!
    猜你喜欢
    • 2018-02-18
    • 1970-01-01
    • 1970-01-01
    • 2023-03-25
    • 1970-01-01
    • 2013-06-23
    • 2011-12-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多