c - xlib 绘图线不会出现在事件循环之外

标签 c xlib

我正在遵循书中的示例,并且我有一个绘制线条的绘图函数。当我将其放置在 XFlush() 之前的事件循环之前时,不会绘制任何线条,但是如果我将其放置在事件循环中,如下所示,则会绘制线条。

while(1)
    {   
        XNextEvent(display, &report);
        if (report.type == Expose)
        {
            draw_lines(win1, gca, 300, 200);
        }
    }

谁能向我解释一下为什么会发生这种情况?非常感谢。为什么我是否将函数放入事件循环中很重要?

最佳答案

xlib 中似乎发生了一些变化。看看我对this question的回答以及它引用的其他内容。

您可以先进行绘制和刷新,然后等待公开事件:

  /* catch expose events */
  XSelectInput(display, win, ExposureMask);

  /* wait for the expose event */
  XEvent ev;
  XNextEvent(display, &ev);

关于c - xlib 绘图线不会出现在事件循环之外,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21065504/

相关文章:

c - 无法在 macOS 中链接动态库

c - C 中的结构复制,其中结构是元素

C多级继承递归

c - 使用 X11 的 Xcomposite 扩展获取被覆盖或不可见或最小化的窗口的屏幕截图

c - 为什么 egl 像素图表面适用于 opengl es 而不适用于 opengl?

python - 如何使用 python-xlib 在所有工作区中搜索窗口?

c++ - 用结构体数据减去指针

c - 如何在 C 中将所有结构体元素复制到 char * 数组中

c - 使用 XDrawString 垂直显示文本

c++ - 如何使用 Qt 到 Xlib 窗口绘制矩形