Получите цвет пикселя на экране в приложении Co-Cacoa - PullRequest
5 голосов
/ 09 декабря 2010

Я пытаюсь создать приложение выбора цвета какао в target-c, чтобы я мог получить цвет любого пикселя на моем экране.Есть ли способ получить цвет определенного пикселя экрана в объективе-c?

Ответы [ 2 ]

14 голосов
/ 10 декабря 2010

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

0 голосов
/ 10 декабря 2010

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

...