创建深度小于VisualInfo的窗口

时间:2014-05-13 06:40:09

标签: x11 xlib

我机器上的视觉效果的深度值是24.是否可以创建较低深度的X窗口(例如16)? 如果有,怎么样?任何指向示例代码的指针都很有用。

XSetWindowAttributes attrs;

attrs.colormap = XCreateColormap(dpy, XDefaultRootWindow(dpy), visual, AllocNone);
attrs.background_pixel = 0;
attrs.border_pixel = 0;

XCreateWindow(dpy, parent, 10, 10, 150, 100, 0, 16, InputOutput,
                visual, CWBackPixel | CWColormap | CWBorderPixel, &attrs);

上面的代码给了我错误的匹配错误。视觉参数具有24位深度。

提前致谢。

1 个答案:

答案 0 :(得分:1)

并非所有服务器都提供所有可能的深度。运行xdpyinfo | grep depths查看您的支持,或者从您的应用程序中调用XListDepths

例如,在我的家用计算机上,X服务器支持16的深度,但在我的工作计算机上它并没有。

编辑窗口深度必须与视觉深度完全匹配,否则会发生BadMatch错误。

XListDepths可用于查询哪些视觉效果支持给定深度。如果所有视觉效果的深度均为24,则每个窗口的深度必须为24.并非所有列出的深度都可以作为给定服务器上的视觉效果实现。