3

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

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

图像应该是这样的:

替代文字

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

替代文字

谁能看到我哪里出错了?奇怪的是,Quartz Debug 可以毫无问题地看到窗口图像,但来自 Apple 的 Grab 示例代码却不能。

4

1 回答 1

2

CGWindowListCreateImage从CGWindow.h 中的文档注释中:

kCGWindowListOptionAll, kCGWindowListOptionOnScreenOnly: 使用此用户会话中的所有屏幕窗口来构建图像。参数windowID应该是kCGNullWindowID

这就是为什么您会获得您感兴趣的矩形内所有窗口的屏幕截图。

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

于 2010-10-28T04:22:25.927 回答