Cocoa 如何抓取屏幕外窗口的图像?
我正在尝试获取屏幕外窗口的图像,以便在基于Cocoa 如何抓取屏幕外窗口的图像?,cocoa,nswindow,cgimage,Cocoa,Nswindow,Cgimage,我正在尝试获取屏幕外窗口的图像,以便在基于CALayer的动画中使用,但无论我尝试哪种方法,我都无法从另一侧获取图像。以下是我在项目中的自定义NSWindow子类上使用的代码: CGImageRef windowImage = CGWindowListCreateImage(CGRectNull, kCGWindowListOptionAll,
CALayer
的动画中使用,但无论我尝试哪种方法,我都无法从另一侧获取图像。以下是我在项目中的自定义NSWindow
子类上使用的代码:
CGImageRef windowImage = CGWindowListCreateImage(CGRectNull,
kCGWindowListOptionAll,
(CGWindowID)[self windowNumber],
kCGWindowImageDefault);
这是图像的外观:
下面是我得到的(忽略稍大的尺寸-这是我在渲染图像时的错误):
有人能看出我哪里做错了吗?奇怪的是,Quartz Debug可以看到没有问题的窗口映像,但无法看到。来自CGWindow中
CGWindowListCreateImage
的文档注释。h:
KCGWINDOWLISTOPTIONAL
,KCGWINDOWLISTOPTIONNSCLEENOLY
:使用此用户会话中的所有屏幕窗口构建图像。参数windowID
应为kcnullwindowid
这就是为什么你会得到你感兴趣的矩形内所有窗口的屏幕截图
要拍摄特定窗口的屏幕截图,请使用
kcgwindowlistoption includingwindow
谢谢Peter,我应该在问题中提到,我也尝试了该选项,但没有效果。有趣的是,当窗口在屏幕上/可见时,被捕获的矩形不是窗口所在的矩形。我也想捕获一个屏幕外的窗口。你找到过这个问题的答案吗?我想确认CGWindowListCreateImage不会在10.9上捕获屏幕外的窗口KCGWindowListoption(包括windows)。