如何在多个显示器上使用 XGetImage?

How to use XGetImage with multiple monitors?

我正在尝试使用 XGetImage() 捕获屏幕内容。一切正常,直到我连接第二台显示器。根据我对 XOpenDisplay 函数的理解,我应该用 XOpenDisplay("hostname:d.s") 之类的东西来调用它,其中 'd' 是显示编号,'s' 是屏幕编号,但它因分段错误而失败.我尝试了多种数字组合(0.0、0.1、1.0、1.1 等)。它仅在我使用 NULL 调用 XOpenDisplay 时有效,但我只能从其中一个显示器获取图像。 'Display' 结构的 'nscreens' 成员是 1。否则第二个监视器工作正常。我正在使用 Ubuntu 14.04.

屏幕编号仅用于不同的帧缓冲区,即如果您的设置中显示器连接到不同的显卡。设置起来有点麻烦,工具包中的支持也不稳定,所以现在很少用了。

大多数多显示器设置都基于 XRANDR 扩展,它将多个视口设置到一个大的帧缓冲区中。 XGetImage() 应该看到一个大屏幕,您的应用程序需要查询 XRANDR 以找出哪些部分实际上是可见的。