【问题标题】:How can i convert NSNamedColorSpace colour to NSCalibratedRGBColorSpace colour? then to CGColor in lion?如何将 NSNamedColorSpace 颜色转换为 NSCalibratedRGBColorSpace 颜色?然后到狮子的CGColor?
【发布时间】:2013-09-20 07:03:51
【问题描述】:

我想将任何作为输入的颜色转换为 CGColor 。一切正常,直到 comming 颜色是空间 NSCalibratedRGBColorSpace,但是当它是 NSNamedColorSpace (NSSelectedMenuItemColor) 类型时,它不会在狮子中产生正确的结果。 也尝试获取 patternImage 但 NSNamedColorSpace 颜色不响应该 API。 相信很多人都遇到过这个问题 如果可以的话,请帮助我。

我试图隐藏的部分代码

       if ([colorSpaceName isEqualToString:NSNamedColorSpace])
        {
            color = [color colorUsingColorSpace:[NSColorSpace genericRGBColorSpace]];
        }

        NSColorSpace *colorSpaceNS = [color colorSpace];
        colorSpace = [colorSpaceNS CGColorSpace];

        size_t numberOfComponents = CGColorSpaceGetNumberOfComponents(colorSpace);
        CGFloat components[numberOfComponents];
        [color getComponents:components];
        requiredColor = CGColorCreate(colorSpace, components);
        CGColorSpaceRelease(colorSpace);

【问题讨论】:

  • 你能粘贴你的代码基本上你想做的吗?
  • 我正在尝试在 NSColor 上编写类别,它返回 LION 中任何 NSColor 输入的 CGColor。一种特殊的情况是输入颜色是 NSSelectedMenuItemColor,它是 NSNamedColorSpace 类型。我想知道如何将其转换为 CGColor。
  • 你能粘贴你的代码吗?
  • 也粘贴了我的代码..有任何更新吗?

标签: objective-c cocoa osx-lion nscolor


【解决方案1】:

最简单的方法(OS X 10.8 或更高版本):

if ([colorSpaceName isEqualToString:NSNamedColorSpace])
        {
            color = [color colorUsingColorSpace:[NSColorSpace genericRGBColorSpace]];
        }

        requiredColor = [color CGColor];

第二种方式(OS X 10.0 或更高版本):

if ([colorSpaceName isEqualToString:NSNamedColorSpace])        {
      color = [color colorUsingColorSpace:[NSColorSpace genericRGBColorSpace]];
}

CGFloat red, green, blue, alpha;
[color getRed:&red green:&green blue:&blue alpha:&alpha];

requiredColor = CGColorCreateGenericRGB(red, green, blue, alpha);

【讨论】:

  • CGColor Api 不是狮子。这就是问题的重点。
  • 我扩大了答案。
  • 即使这样的结果对我从代码中得到的结果也几乎是微笑的。没有改进,我正在尝试转换 NSSelectedMenuItemColor。
  • 请提供更多信息,尤其是如何获得 NSSelectedMenuItemColor。我不明白你的问题。添加一些代码...
猜你喜欢
  • 2017-04-07
  • 2017-08-11
  • 2019-11-14
  • 2019-02-08
  • 2018-11-14
  • 1970-01-01
  • 2018-11-09
  • 1970-01-01
  • 2017-07-19
相关资源
最近更新 更多