2010-12-09 5 views

답변

13

당신은. 당신이 관심있는 지점을 포괄하는 CGImageRef를 얻을 수 CGDisplayCreateImageForRect을 사용할 수 있습니다 당신은의 CGImage이 있으면, 사용자 정의 버퍼에 이미지를 렌더링함으로써 그것의 색상 값을 얻을 수 있습니다, 또는 NSBitmapImageRep의 initWithCGImage를 사용하여 colorAtX : y :를 선택합니다. 아마 장치 색상 공간의 색상을 반환합니다

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]; 
} 

다음 NSBitmapImageRep 방법에 대한 "스택 오버플로 코드 창에 쓰여진"코드는 같을 것이다. 대신 보정 된 RBG 색상 공간에서 색상을 반환하는 것이 유용 할 수 있습니다.

+3

나는 [bitmap colorAtX : 0 y : 0]이어야한다고 생각합니다. –

+0

그래, 0, 0이어야합니다. 그래도 "스택 오버플로 코드 창"작성. –

0

시도 NSReadPixel. 현재 마우스 위치를 가져와 적절한 좌표 참조 프레임으로 변환해야합니다. 색상을 얻은 후에는 필요에 따라 다른 색상 공간으로 변환해야 할 수도 있습니다.

+0

이것은 현재 포커스가 고정되어 있지만 다른 프로세스에서 화면 픽셀을 읽을 수는없는 주소 공간의보기 및 창에 적용됩니다. –

관련 문제