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



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

但是我怎样才能设置该 Xwindow 的 Alpha 值。我尝试了几种方法,但是当我从XWindow读取时,每个像素都有Alpha作为0xff。

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

设置 Alpha 通道仅适用于深度为 32 位的视觉对象。使用 XMatchVisualInfo 创建 32 位视觉对象。这只有在您的图形硬件支持的情况下才有效。

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

要创建一个没有边框的透明窗口(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;
}

相关内容

  • 没有找到相关文章

最新更新