在Xlib窗口中更改像素的Alpha值

时间:2013-10-16 17:50:26

标签: x11 pixel xlib alpha-transparency

我正在经历(Change Xlib window background color with C++)&知道设置XWindow的背景颜色。

但是如何设置Xwindow的Alpha值。我尝试了几件事,但是当我从XWindow读取时,每个像素的Alpha都为0xff。

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

2 个答案:

答案 0 :(得分:3)

设置Alpha通道仅适用于深度为32位的视觉效果。使用 XMatchVisualInfo 创建32位视觉效果。只有你的图形硬件支持它才能工作。

查看this answer我发布了生成完全透明窗口的示例代码。

答案 1 :(得分: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;
}