我想使用 Xlib 将现有窗口的内容复制到我自己的窗口。我尝试过 XCopyArea,但它拒绝在两个 Windows 之间复制。我也尝试过 XGetImage 和 XPutImage 但也失败了。
将窗口的图形内容复制到我自己的窗口的最佳方法是什么?
Part II:
根据以下信息,我能够使 XCopyArea 和 XGetImage 正常工作。它不起作用的原因是源窗口和目标窗口的深度不同。我很惊讶地发现不同的 Windows 在我的桌面上有不同的深度。
但我在 XCopyArea 方面取得的成功仍然有限。如果我开始从top of certainWindows 与 Google Chrome 一样,它不会复制整个区域,只会复制标题栏。 XGetImage 在这些情况下工作得很好。关于为什么 XCopyArea 不会复制到标题栏之外的任何线索some视窗?
X复制区 http://tronche.com/gui/x/xlib/graphics/XCopyArea.html应该没事。
请注意,这只会复制到目标的前台 - 也许它正在被绘制然后被删除?
没有代码我可以推测:
如果失败,您是否检查过窗户是否具有相同的根部和深度?
还要确保您检查了 X Window 坐标系。也许尝试复制,使副本的一角位于目的地的中心,看看是否可以获得任何东西。
您通常需要某种方式在目标窗口中处理 Expose 事件,以便可以进行刷新。
我建议创建一个 Pixmap 作为中间体。 Pixmap 和 Window 都是可绘制的。
使用 XCopyArea 复制到 Pixmap 中。
然后使用XSetWindowBackgroundPixmap http://tronche.com/gui/x/xlib/window/XSetWindowBackgroundPixmap.html实际渲染图像。设置背景意味着您可以忽略处理 Expose 事件以重绘图像的任何需要。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)