如何创建位深度为32的窗口
我正在尝试创建位深度为 32 的 X11 窗口,以便可以使用 ARGB 颜色。这就是我所做的:
XVisualInfo vinfo; int depth = 32; XMatchVisualInfo(dpy, XDefaultScreen(dpy), depth, TrueColor, &vinfo); XCreateWindow(dpy, XDefaultRootWindow(dpy), 0, 0, 150, 100, 0, depth, InputOutput, vinfo.visual, 0, NULL);
这就是发生的情况:
X Error of failed request: BadMatch (invalid parameter attributes) Major opcode of failed request: 1 (X_CreateWindow) Serial number of failed request: 7 Current serial number in output stream: 7
有任何关于为什么出现 BadMatch 错误的指示吗?
I'm trying to create a X11 window with a bit depth of 32 so that I can use ARGB colors. Here's what I do:
XVisualInfo vinfo; int depth = 32; XMatchVisualInfo(dpy, XDefaultScreen(dpy), depth, TrueColor, &vinfo); XCreateWindow(dpy, XDefaultRootWindow(dpy), 0, 0, 150, 100, 0, depth, InputOutput, vinfo.visual, 0, NULL);
Here's what happens:
X Error of failed request: BadMatch (invalid parameter attributes) Major opcode of failed request: 1 (X_CreateWindow) Serial number of failed request: 7 Current serial number in output stream: 7
Any pointers on why there is a BadMatch error?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
问题是 X 服务器 http://cgit 中的这段代码。 freedesktop.org/xorg/xserver/tree/dix/window.c#n615
即“如果深度与父深度不同,则必须设置边框像素或像素图”
这是一个完整的示例
The problem is this code in the X server http://cgit.freedesktop.org/xorg/xserver/tree/dix/window.c#n615
i.e. "if depth isn't same as parent depth you have to set the border pixel or pixmap"
Here is a whole example