背景
我正在为需要以编程方式放大当前桌面的台式计算机开发应用程序。它必须只显示放大的区域。
使用的语言是 C++,我目前正在运行 Ubuntu,但将来它将适用于其他平台。
当前方法
对于当前方法,使用了渲染窗口 (RW)。对于每次渲染迭代g,首先将其最小化,并通过XGetImage(X11)获取桌面图像(截图):
XImage *image = XGetImage(xDisplay, RootWindow(xDisplay, DefaultScreen(xDisplay)), 0, 0, screenWidth, screenHeight, AllPlanes, ZPixmap);
然后处理图像以提供缩放区域,并最大化和渲染 RW。
这种方法,即使没有缩放处理,由于最小化和最大化过程需要很长时间,并且不允许实时执行。
问题
如何渲染当前桌面的实时放大版本?
可以建议缩放库,但它们必须高效,即不能消耗太多处理,并且允许通过代码完全控制缩放区域,也就是说,它必须不需要鼠标/键盘。
特别说明
由于此应用程序的主要关注点是 Linux 兼容性,因此将感谢有关 Windows 的答案(如 Magnification-API 的操作方法),但不接受作为正确答案。