Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 在XLIB中使用XDRAW矩形在屏幕上拖动鼠标时,不需要的闪烁橡胶带_C_Xlib_Rubber Band - Fatal编程技术网

C 在XLIB中使用XDRAW矩形在屏幕上拖动鼠标时,不需要的闪烁橡胶带

C 在XLIB中使用XDRAW矩形在屏幕上拖动鼠标时,不需要的闪烁橡胶带,c,xlib,rubber-band,C,Xlib,Rubber Band,我在Ubuntu 14.04平台上,我正试图为我的屏幕播放项目制作一个橡胶垫。我找到了使用xlib的rubberbanding示例,但我在拖动鼠标时看到了闪烁和部分丢失的矩形。我想知道它是针对我的系统还是不推荐使用的xlib库? 有解决办法吗 我还注意到imagemagic的屏幕位置抓取命令import window.miff也以同样的方式闪烁 这是我试过的代码 看起来背景中的终端正在重新喷漆。您可能总是自私,执行XGrabServer(),移动/调整窗口大小时使用矩形的WMs就是这样做的。

我在Ubuntu 14.04平台上,我正试图为我的屏幕播放项目制作一个橡胶垫。我找到了使用xlib的rubberbanding示例,但我在拖动鼠标时看到了闪烁和部分丢失的矩形。我想知道它是针对我的系统还是不推荐使用的xlib库? 有解决办法吗

我还注意到imagemagic的屏幕位置抓取命令
import window.miff
也以同样的方式闪烁

这是我试过的代码


看起来背景中的终端正在重新喷漆。您可能总是自私,执行
XGrabServer()
,移动/调整窗口大小时使用矩形的WMs就是这样做的。在您释放抓斗之前,屏幕上的其他内容(时钟、负载监视器)不会更新

应避免服务器抓取。您可能需要添加一个
--grab/--nograb
选项,让用户决定是希望避免视觉伪影,还是让其他应用程序(电影播放器、加载监视器、时钟等)在橡皮包过程中更新屏幕

另一种选择是使用半透明窗口而不是轮廓矩形,这与现代窗口管理器倾向于使用真实窗口而不是橡皮筋移动/调整窗口大小的方式类似(即使这可能意味着在操作完成之前多次重新绘制窗口,对于远程X,使用橡皮筋移动/调整大小肯定表现得更好)

XGrabServer()
令人讨厌的例子:

  • :一名TWM用户在调整窗口大小时抱怨XGrabServer(),冻结了在其他窗口上播放的视频,并破坏了流媒体网络连接
  • :用户抱怨由于(ab-)使用
    XGrabServer()
    ,在启动应用程序时冻结了约25秒

如果在GC中使用xor,则可以通过再次绘制完全相同的内容来选择性地删除行。无需重新绘制整个窗口

XSetFunction(dpy,gc,GXxor); // sets xor mode
只需设置一些缓冲区,并保留一份您绘制的内容副本,以便可以再次执行(包括颜色)

我去年写过这样一篇文章:我将最后50行存储在一个循环缓冲区中,然后重新绘制它们以进行擦除。我可以在没有不完整的擦除工件的情况下运行数小时。而且CPU使用率非常低。几乎达到xscreensaver质量。

看起来后台的终端正在重新粉刷自己。你可能总是很自私,做一个
XGrabServer()
,这是移动/调整窗口大小时使用矩形的WMs所做的。在你释放抓取之前,屏幕上的任何其他内容(时钟、加载监视器)都不会更新。@ninjalj非常感谢!放置
XGrabServer(disp)
XDrawRectangle()之前
有效。请将其作为答案发布。这可能对其他人有帮助。我还尝试查找基于glut的橡胶粘合示例,我发现了一些示例,但它们都有窗口装饰器。我无法删除窗口装饰器,在glut中似乎很难做到这一点。这是我的glut问题OP已经在使用XOR。问题是下面的窗户正在重新粉刷。