Ste*_*eod 3 macos objective-c quartz-graphics
我正在使用 CGWindowListCreateImage 来获取屏幕截图。我正在尝试获取一个特定的窗口,我知道其 windowID。这是我正在使用的代码,但它似乎总是占据整个屏幕,包括所有窗口。
CGImageRef windowImage = CGWindowListCreateImage(
CGRectNull,
kCGWindowListOptionOnScreenOnly,
windowID,
kCGWindowImageBoundsIgnoreFraming);
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
您要求它抓取整个屏幕,包括所有窗口,这样您就可以得到您所要求的内容。查看文档:
\n\n\n\n\n窗口选项
\n\n\n\n描述图像中包含哪些窗口的选项。\n 典型选项允许您选择所有窗口或 windowID 参数中指定的窗口上方或下方的窗口。有关详细信息,请参阅\xe2\x80\x9c窗口列表选项常量。\xe2\x80\x9d
\n
对于此值,您将传递kCGWindowListOptionOnScreenOnly,这意味着:
\n\n\n列出当前屏幕上的所有窗口。窗口按从前到后的顺序返回。使用此选项检索列表时,relativeToWindow 参数应设置为 kCGNullWindowID。
\n
从技术上讲,用 windowID 传递这个选项甚至是不合法的,但如果你这样做,Quartz 很好,只是忽略你的 ID。
\n\n如果您希望屏幕截图限制在窗口的屏幕矩形内,则需要传递该值,而不是CGRectNull. 如果您想要被遮挡的窗口而不是它前面的窗口,请使用kCGWindowListOptionOnScreenBelowWindow | kCGWindowListOptionIncludingWindow您的选项。
| 归档时间: |
|
| 查看次数: |
1308 次 |
| 最近记录: |