NSColor 核心粉底对应?

发布于 2025-01-05 06:47:02 字数 231 浏览 0 评论 0原文

NSColor 是否有“免费桥接”Core Foundation 对应版本?

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

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

非常感谢任何提示。

Is there a “toll-free bridged” Core Foundation counterpart for NSColor?

CGColorRef doesn't seem to like NSColor and vice versa?

Basically we'd like to create NSColor (or compatible) objects from our C++ wrapper/framework classes that store the actual r/g/b/a values. I know we could use Objective-C++ but staying in the C++ world would be preferrable!

Any hints much appreciated.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

甜嗑 2025-01-12 06:47:02

您可以将 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: 进行转换可能会更容易。

You could convert a CGColorRef to an NSColor like this:

CGColorRef cgColor = ...;
NSColorSpace *colorSpace = [[[NSColorSpace alloc] initWithCGColorSpace:CGColorGetColorSpace(cgColor)] autorelease];
NSColor *nsColor = [NSColor colorWithColorSpace:colorSpace 
                                     components:CGColorGetComponents(cgColor) 
                                          count:CGColorGetNumberOfComponents(cgColor)];

If you use this a lot, it's probably best to put this in an NSColor category method.

If your colors are all in the RGBA colorspace, it might be easier to just use a simple struct in your C++ code and use colorWithCalibratedRed:green:blue:alpha: for conversion.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文