我正在尝试获取一个用于基于CALayer
的动画的屏幕外窗口的图像,但无论我尝试哪种方法,我都无法从另一侧获取图像。这是我在项目中的自定义NSWindow
子类上使用的代码:
CGImageRef windowImage = CGWindowListCreateImage(CGRectNull,
kCGWindowListOptionAll,
(CGWindowID)[self windowNumber],
kCGWindowImageDefault);
这就是图像的样子:
这就是我得到的(忽略稍大的尺寸 - 这是我在渲染图像时的错误):
谁能看到我哪里出错了?奇怪的是,Quartz Debug可以毫无问题地看到窗口图像,但Son of Grab sample code from Apple不能。
答案 0 :(得分:2)
来自CGWindow.h中CGWindowListCreateImage
的文档评论:
kCGWindowListOptionAll
,kCGWindowListOptionOnScreenOnly
:使用此用户会话中的所有屏幕窗口构建图像。参数windowID
应为kCGNullWindowID
。
这就是为什么你要获得你感兴趣的矩形内所有窗口的截图。
要截取特定窗口的屏幕截图,请使用kCGWindowListOptionIncludingWindow
。