程序启动后会先创建绘制显示一个窗口供用户进行操作,操作结束后,会调用 XGetImage 对屏幕中的一块区域进行截图,为了使截图不包含操作窗口的内容,在 XGetImage 调用前,对操作窗口调用 XUnmapWindow 进行隐藏,代码大致如下:
XUnmapWindow XFlush // 确保提交到 XServer sleep // XGetImage
然而 XGetImage 截图中还是会有操作窗口的内容,为此尝试增加了上面 XFlush 语句,然而还是没有达到目的,不得已加了 sleep 语句,然而还得保证 sleep 的间隔足够大(在我这里的环境下是几十毫秒)才能达到目的。有经验的朋友可以帮助解释一下其中的原理吗 ?如何避免使用 sleep 而达到同样目的呢?
官方那个自带的截图不是开源的嘛?直接扒源码去
Popular Events
程序启动后会先创建绘制显示一个窗口供用户进行操作,操作结束后,会调用 XGetImage 对屏幕中的一块区域进行截图,为了使截图不包含操作窗口的内容,在 XGetImage 调用前,对操作窗口调用 XUnmapWindow 进行隐藏,代码大致如下:
XUnmapWindow
XFlush // 确保提交到 XServer
sleep //
XGetImage
然而 XGetImage 截图中还是会有操作窗口的内容,为此尝试增加了上面 XFlush 语句,然而还是没有达到目的,不得已加了 sleep 语句,然而还得保证 sleep 的间隔足够大(在我这里的环境下是几十毫秒)才能达到目的。有经验的朋友可以帮助解释一下其中的原理吗 ?如何避免使用 sleep 而达到同样目的呢?