首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将NSColor转换为RGB

将NSColor转换为RGB
EN

Stack Overflow用户
提问于 2013-03-28 21:18:14
回答 7查看 10.7K关注 0票数 6

我正在尝试将NSColor转换为RGB,但似乎给出了一个完全不正确的结果:

代码语言:javascript
复制
NSColor *testColor = [NSColor colorWithCalibratedWhite:0.65 alpha:1.0];

const CGFloat* components = CGColorGetComponents(testColor.CGColor);
NSLog(@"Red: %f", components[0]);
NSLog(@"Green: %f", components[1]);
NSLog(@"Blue: %f", components[2]);
NSLog(@"Alpha: %f", CGColorGetAlpha(testColor.CGColor));

我返回:红色= 0.65 -绿色= 1.0 -蓝色= 0.0,alpha为1.0 -这会产生一个完全不同的颜色。(它应该是灰色的,现在是绿色的)。

我做错了什么吗?

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2013-03-28 21:20:37

首先需要使用NSColorSpace对象将颜色转换为RGB颜色空间,然后可以使用各种NSColor访问器方法获取组件。

票数 7
EN

Stack Overflow用户

发布于 2015-12-06 16:42:13

从NSColor中提取RGBA值:(Swift 3)

代码语言:javascript
复制
let nsColor:NSColor = NSColor.red
let ciColor:CIColor = CIColor(color: nsColor)!
print(ciColor.red)//1.0
print(ciColor.green)//0.0
print(ciColor.blue)//0.0
print(ciColor.alpha)//1.0 /*or use nsColor.alphaComponent*/

注意: NSColor.blackColor().redComponent会使应用程序崩溃,但上面的代码不会

票数 11
EN

Stack Overflow用户

发布于 2017-07-21 17:56:56

当我想要将拾取的颜色转换为十六进制时,我也遇到了同样的问题。NSColor组件值不正确。我设法解决了上面你的comment的问题。

Swift中的示例:

代码语言:javascript
复制
let colorTest = NSColor.init(calibratedWhite: 0.65, alpha: 1.0)
let color = colorTest.usingColorSpace(NSColorSpace.deviceRGB) ?? colorTest
print(colorTest)
// NSCalibratedWhiteColorSpace 0.65 1
print(colorTest.colorSpace) 
// Generic Gray colorspace
print("red: \(color.redComponent) green:\(color.greenComponent) blue:\(color.blueComponent)") 
// red: 0.708725869655609 green:0.708725869655609 blue:0.708725869655609
票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15682923

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档