我在 Ubuntu 14.04 平台上,我正在尝试为我的截屏项目制作一个橡皮筋。我找到了使用 xlib 的橡皮筋示例,但是在拖动鼠标时出现了闪烁和部分缺失的矩形。我想知道它是否特定于我的系统或已弃用的 xlib 库? 是否有解决方法来解决它?
我还注意到 imagemagic 的屏幕位置抓取命令 import window.miff
也以同样的方式闪烁。
这是我试过的代码
最佳答案
看起来后台的终端正在重新粉刷自己。您可以总是自私,并执行 XGrabServer()
,在移动/调整窗口大小时使用矩形的 WM 会执行此操作。在您松开抓取之前,屏幕上的任何其他内容(时钟、负载监视器)都不会更新。
应避免服务器抢夺。您可能希望添加一个 --grab/--nograb
选项,让用户决定他们是喜欢避免视觉伪影还是让其他应用程序(电影播放器、负载监视器、时钟等)更新橡皮圈期间的屏幕。
另一种选择是使用半透明窗口而不是轮廓矩形,类似于现代窗口管理器倾向于使用真实窗口而不是橡皮筋来移动/调整窗口大小(即使这可能意味着之前多次重新绘制窗口操作已完成,因为使用橡皮筋进行远程 X 移动/调整大小肯定表现更好。
XGrabServer()
令人讨厌的示例:
- Patch to TWM to make NoGrabServer affect resize as well as move : 一位 TWM 用户提示
XGrabServer()
在调整窗口大小时卡住在其他窗口上播放的视频,并严重破坏流媒体网络连接。 - acroread locks up X when it starts :由于(滥用)使用
XGrabServer()
,用户在启动应用程序时提示 25 秒长的卡住。
关于c - 使用 XLIB 中的 XDrawRectangle 在屏幕上拖动鼠标时不需要的闪烁橡皮筋,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25191715/