我正在学习X窗口编程并尝试一个演示程序:
http://users.actcom.co.il/~choo/lupg/tutorials/xlib-programming/simple-drawing.c
这是使用Xlib库进行基本图形编程的一个示例代码;该教程的链接是http://users.actcom.co.il/~choo/lupg/tutorials/xlib-programming/xlib-programming.html
问题是我的计算机上面的演示总是空白。该程序应该在屏幕上显示一些基本形状,但在我的计算机中,窗口只是完全白色。我正在使用Ubuntu 13.04.I通过gcc simple-drawing.c编译上面的代码-o draw -lX11
关于Xcreatewindow()的另一个问题:我通过设置x = 200,y = 200来指定XCreatewindow的起源(显示,父,x,y,宽度,高度,border_width,深度,类,视觉,值掩码,属性) ,但窗口仍然显示在我的显示器的左上角。 XCreatewindow()中的x和y是指什么?
答案 0 :(得分:1)
这与this one
的问题相同由于某种原因XFlush
和XSync
没有按照您的预期行事。
解决方案是等待expose事件然后绘制形状。所以
之后 /* allocate a new GC (graphics context) for drawing in the window. */
gc = create_gc(display, win, 0);
XSync(display, False);
在主要添加
/* catch expose events */
XSelectInput(display, win, ExposureMask);
/* wait for the expose event */
XEvent ev;
XNextEvent(display, &ev);
对于您的其他问题,创建窗口中的X和Y是屏幕左上角的起始坐标(原点),而不是窗口放置的位置,由窗口管理器确定。