Изменить альфа-значение пикселей в окне Xlib

Я иду через ( Изменить цвет фона окна Xlib с C++) и знаю, как установить цвет фона XWindow.

Но как я могу установить альфа-значение этого Xwindow. Я попробовал несколько вещей, но когда я читаю из XWindow, у каждого пикселя есть альфа как 0xff.

Есть ли способ, которым я могу установить эту альфа как 0x00. Пожалуйста, предоставьте пример кода.

2 ответа

Настройка альфа-канала будет работать только для визуалов с глубиной 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;
}
Другие вопросы по тегам