3

我正在经历(使用 C++ 更改 Xlib 窗口背景颜色)并且知道设置 XWindow 的背景颜色。

但是我怎样才能设置那个 Xwindow 的 Alpha 值。我尝试了几件事,但是当我从 XWindow 读取时,每个像素的 Alpha 为 0xff。

有什么办法可以将此 alpha 设置为 0x00。请提供一些示例代码。

4

2 回答 2

3

设置 Alpha 通道仅适用于 32 位深度的视觉效果。使用XMatchVisualInfo创建 32 位视觉效果。仅当您的图形硬件支持它时,这才有效。

查看这个答案,我在其中发布了生成完全透明窗口的示例代码。

于 2013-10-16T19:41:31.890 回答
1

为了创建一个没有边框的透明窗口(ARGB:0x00000000),我可以这样使用吗?请确认。

int main(int argc, char* argv[])
{
    Display* display = XOpenDisplay(NULL);

    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 win = XCreateWindow(display, DefaultRootWindow(display), 0, 0, 300, 200, 0, vinfo.depth, InputOutput, vinfo.visual, CWColormap | CWBorderPixel | CWBackPixel, &attr);

    XDestroyWindow(display, win);
    XCloseDisplay(display);
    return 0;
}
于 2013-10-17T04:01:01.617 回答