Вы можете использовать CGDisplayCreateImageForRect, чтобы получить CGImageRef, который охватывает интересующую вас точку. Получив CGImage, вы можете получить значение цвета из него, отобразив изображение в пользовательский буфер или используя initWithCGImage из NSBitmapImageRep итогда 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.