如何抓取一个离开NSWindow的图像?

时间:2010-10-28 04:09:07

标签: cocoa nswindow cgimage

我正在尝试获取一个用于基于CALayer的动画的屏幕外窗口的图像,但无论我尝试哪种方法,我都无法从另一侧获取图像。这是我在项目中的自定义NSWindow子类上使用的代码:

CGImageRef windowImage = CGWindowListCreateImage(CGRectNull, 
                                                 kCGWindowListOptionAll, 
                                                 (CGWindowID)[self windowNumber], 
                                                 kCGWindowImageDefault);

这就是图像的样子:

alt text

这就是我得到的(忽略稍大的尺寸 - 这是我在渲染图像时的错误):

alt text

谁能看到我哪里出错了?奇怪的是,Quartz Debug可以毫无问题地看到窗口图像,但Son of Grab sample code from Apple不能。

1 个答案:

答案 0 :(得分:2)

来自CGWindow.h中CGWindowListCreateImage的文档评论:

  

kCGWindowListOptionAllkCGWindowListOptionOnScreenOnly:使用此用户会话中的所有屏幕窗口构建图像。参数windowID应为kCGNullWindowID

这就是为什么你要获得你感兴趣的矩形内所有窗口的截图。

要截取特定窗口的屏幕截图,请使用kCGWindowListOptionIncludingWindow