我正在创建一个应用程序来捕获屏幕的一小部分区域,并将其与保存到磁盘的图像库进行比较。几年前我在.net中编写了一个类似的应用程序,并使用了bitblt和WINAPI。性能非常重要,如果它对性能产生影响,我不介意钻研openGL。
答案 0 :(得分:3)
你可以使用这样的代码:
-(NSImage*)captureImageFromRect:(NSRect)captureRect
{
NSImage *resultingImage = nil;
CGImageRef image;
CGWindowID windowID = (CGWindowID)[[self window] windowNum];
image = CGWindowListCreateImage(NSRectToCGRect(captureRect), kCGWindowListOptionIncludingWindow|kCGWindowListOptionOnScreenBelowWindow, windowID, kCGWindowImageDefault);
resultingImage = [[NSImage alloc] initWithCGImage:image size:NSZeroSize];
CGImageRelease(image);
return [resultingImage autorelease];
}