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