渲染上下文通常在背景上具有纯色(黑色或其他任何内容,请参见下图):

我想知道是否可以设置一个窗口,没有装饰和透明背景,同时允许我渲染OpenGL的东西.
这会产生三角形漂浮在屏幕上的错觉.透明背景应该允许您查看可能位于其后面的桌面或其他应用程序.
你能用源代码举例说明吗?
平台:Windows(仅限win32)
我想让背景透明,只有窗口小部件可见.
这是我的代码:
#include <gtk/gtk.h>
int main (int argc, char *argv[])
{
gtk_init (&argc, &argv);
GtkWidget *window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
// Title
gtk_window_set_title(GTK_WINDOW (window), "Transparency");
//gtk_window_set_opacity(GTK_WINDOW(window), 0.5);
// CSS
GtkCssProvider *provider = gtk_css_provider_new();
GdkDisplay *display = gdk_display_get_default();
GdkScreen *screen = gdk_display_get_default_screen(display);
gtk_style_context_add_provider_for_screen(screen, GTK_STYLE_PROVIDER (provider), GTK_STYLE_PROVIDER_PRIORITY_USER);
gtk_css_provider_load_from_data(GTK_CSS_PROVIDER (provider),
"GtkWindow {\n"
" background-color: rgba(0,0,0,0);\n"
"}\n",
-1, NULL);
g_object_unref (provider);
// Window
gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
gtk_window_resize(GTK_WINDOW(window), 400, 300);
gtk_widget_show_all(window);
gtk_main();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我用gtk3.程序执行时,它只显示黑色.CSS(或rgba)函数不起作用.我尝试使用gtk_window_set_opacity(),但它也只显示黑色.如何修复代码?
有没有办法在 Linux 上的 Tkinter 窗口中获得透明背景?
我目前看到的唯一方法是:
import tkinter as tk
root = tk.Tk()
root.overrideredirect(True)
root.wait_visibility(True)
root.wm_attributes("-alpha", 0.0)
canvas = tk.Canvas(root, width=300, height=300)
canvas.pack()
canvas.create_rectangle(50, 25, 150, 75, fill="red")
root.mainloop()
Run Code Online (Sandbox Code Playgroud)
然而,这不是我想要的。我想让背景变得透明,这样我的叠加层就可以是其他东西。
我在这里找到了几篇文章,但它们只涵盖了 Windows 和 Mac OS 上的背景透明度。Linux相关的只是alpha?