0

入力として来る色を CGColor に変換したい。来る色がスペース 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);
4

1 に答える 1

1

最も簡単な方法 (OS X 10.8 以降):

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

        requiredColor = [color CGColor];

2 番目の方法 (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);
于 2013-12-03T07:42:53.550 に答える