Изменить альфа-значение пикселей в окне 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;
}