我正在尝试在Darwin OS源代码中找到一个类,其中具有截屏功能。
我发现 video_console.c 负责在屏幕上显示图像,但我无法进一步了解。 有谁知道这个代码位于哪里?谢谢你。
正如另一位评论者所暗示的,这不是您从内核(xnu)执行的操作,而是窗口系统执行的操作。
您在问题中同时标记了 macOS 和 iOS;答案不同。
CGDisplayCreateImage
。请注意,您的应用程序需要获得用户的同意才能使此 API 正常工作。
在 iOS 上,情况稍微复杂一些。在您的应用程序中,您可以将视图层次结构绘制到屏幕外上下文。这不是直接的屏幕截图,但如果您只需要保存应用程序当前显示的内容,那么这是迄今为止最简单的解决方案。除此之外,我所知道的唯一解决方案是ReplayKit。这提供了视频流而不是单个图像,因此您需要处理它。