我正在尝试在objective-c中创建一个颜色选择器可可应用程序,这样我就可以获得屏幕上任何像素的颜色。有没有办法在objective-c中获得某个屏幕像素的颜色?
答案 0 :(得分:14)
您可以使用CGDisplayCreateImageForRect来获取包含您感兴趣的点的CGImageRef。一旦有了CGImage,您可以通过将图像渲染到自定义缓冲区或使用NSBitmapImageRep的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];
}
这可能会返回设备颜色空间中的颜色。改为在校准的RBG颜色空间中返回颜色可能很有用。
答案 1 :(得分:0)
试试NSReadPixel。您需要获取当前鼠标位置并将其转换为适当的坐标参考框架。获得颜色后,您可能需要根据需要将其转换为不同的颜色空间。