三,显示器截图
screen_read_display() 函数则用于捕获显示器的屏幕截图。我们需要在特权上下文中工作,以便可以完全访问系统的显示属性。我们可以通过调用具有 SCREEN_DISPLAY_MANAGER_CONTEXT 上下文类型的 screen_create_context() 来创建特权上下文。进程必须具有 root 的有效用户 ID 才能创建此上下文类型。当捕获多个显示器的屏幕截图时,我们需要为每个显示器调用一次 screen_read_display()。
3.1 screen_read_display()函数介绍
以下过程描述了如何使用Screen捕获单个显示器的屏幕截图。我们可以将生成的屏幕截图存储在pixmap或窗口缓冲区中以进行进一步操作。此特定过程描述了在pixmap缓冲区中捕获屏幕截图,然后将屏幕截图写入位图。
下面的示例应用程序使用灰色沙漏、移动的蓝色垂直条和黄色背景的组件。接下来我们看如何使用Screen API捕获屏幕截图。
应用程序通过下面的过程来实现显示器截图,如下:
- 创建一个pixmap和缓冲区来存储你的截图
- 检索适当的 pixmap 属性,为截图做准备
- 截图
- 最后在将截图写入位图文件
3.2 screen_read_display()使用示例
首先应该已经使用 screen_create_context() 创建了一个具有 SCREEN_DISPLAY_MANAGER_CONTEXT 上下文类型的特权上下文。为了能够创建此特权上下文,我们的进程必须具有 root 的有效用户 ID。