我想创建一个具有透明背景的窗口。怎么做?
我使用XSetBackground(display, gc, 0)
,背景是黑色。我将屏幕深度更改为32
。结果仍然是黑色的。这是我的代码:
display = XOpenDisplay(getenv("DISPALY"));
screen = DefaultScreen(display);
depth = DefaultDepth(display,screen);
printf("depth: %d\n", depth);
rootwindow = RootWindow(display,screen);
XVisualInfo vinfo;
XMatchVisualInfo(display, DefaultScreen(display), 32, TrueColor, &vinfo);
XSetWindowAttributes attr;
attr.colormap = XCreateColormap(display, DefaultRootWindow(display), vinfo.visual, AllocNone);
attr.border_pixel = 0;
attr.background_pixel = 0;
window = XCreateWindow(display, DefaultRootWindow(display), 0, 0, 1440, 900, 0, vinfo.depth, InputOutput,
vinfo.visual, CWColormap | CWBorderPixel | CWBackPixel, &attr);
gc = XCreateGC (display, window, 0, NULL);
XSetBackground(display, gc, 0L);
答案 0 :(得分:2)
你需要
请参阅我的问题"How to upload 32bit pixmap to server",了解如何设置Alpha通道值
更新:还要确保您的窗口是使用关联的色彩映射创建的(我不知道这背后的原因,但我无法在没有色彩映射的情况下正确显示32位窗口)