Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在objective-c cocoa应用程序中获取屏幕上像素的颜色_Objective C_Cocoa_Macos_Colors_Pixel - Fatal编程技术网

在objective-c cocoa应用程序中获取屏幕上像素的颜色

在objective-c cocoa应用程序中获取屏幕上像素的颜色,objective-c,cocoa,macos,colors,pixel,Objective C,Cocoa,Macos,Colors,Pixel,我正在尝试在objective-c中创建一个颜色选择器可可应用程序,这样我就可以获得屏幕上任何像素的颜色。有没有办法获得objective-c中某个屏幕像素的颜色?您可以使用CGDisplayCreateImageForRect获得包含感兴趣点的CGImageRef。拥有CGImage后,可以通过将图像渲染到自定义缓冲区,或使用NSBitmapImageRep的initWithCGImage,然后使用colorAtX:y:,从中获取颜色值。NSBitmapImageRep方法的“写入堆栈溢出代码

我正在尝试在objective-c中创建一个颜色选择器可可应用程序,这样我就可以获得屏幕上任何像素的颜色。有没有办法获得objective-c中某个屏幕像素的颜色?

您可以使用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颜色空间中的颜色可能有用。

试试。您需要获取当前鼠标位置并将其转换为相应的坐标参照系。拥有颜色后,您可能需要根据需要将其转换为不同的颜色空间。

这将适用于当前已锁定绘图焦点的地址空间中的视图和窗口,但不允许您从其他进程读取屏幕像素。我相信它应该是[bitmap colorAtX:0 y:0]。是的,它应该是0,0.但仍然是“写入堆栈溢出代码窗口”。