如何在OS X中创建自定义颜色选择器

时间:2013-07-26 12:17:49

标签: objective-c macos cocoa colors

如何使用Objective-C在OS X中创建颜色选择器?

你有一些有用的代码吗?

由于

2 个答案:

答案 0 :(得分:5)

使用NSColorWell的标准方式。

如果你想要不同的东西,请查看GitHub和CocoaControls

......可能还有更多。

答案 1 :(得分:2)

您可以使用CGDisplayCreateImageForRect获取包含您感兴趣的点的CGImageRef。一旦拥有CGImage,您就可以通过渲染获得颜色值将图像放入自定义缓冲区,或使用NSBitmapImageRep's initWithCGImage然后使用colorAtX:y:NSBitmapImageRep方法的“写入堆栈溢出代码窗口”代码如下所示:

NSColor *MyColorAtScreenCoordinate(CGDirectDisplayID displayID, NSInteger x, NSInteger y) {
    CGImageRef image = CGDisplayCreateImageForRect(displayID, CGRectMake(x, y, 1, 1));
    NSBitmapImageRep *bitmap = [[NSBitmapImageRep alloc] initWithCGImage:image];
    CGImageRelease(image);
    NSColor *color = [bitmap colorAtX:0 y:0];
    [bitmap release];
}

这可能会返回设备颜色空间中的颜色。改为在校准的RGB色彩空间中返回颜色可能很有用。