2010-12-09 4 views

ответ

13

Вы можете использовать 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.

+3

Должно быть [bitmap colorAtX: 0 y: 0] Я считаю. – 2011-02-16 08:15:27

+0

Да, это должно быть 0, 0. Тем не менее «записано в окне переполнения стека». – 2012-04-10 08:48:47

0

Пробег: NSReadPixel. Вам нужно будет получить текущее местоположение мыши и преобразовать его в соответствующий опорный кадр координат. Как только у вас есть цвет, вам может потребоваться преобразовать его в другое цветовое пространство, в зависимости от ваших потребностей.

Смежные вопросы