Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C GTK3-文本视图透明度,用于显示后面的应用程序_C_Textview_Transparency_Gtk3 - Fatal编程技术网

C GTK3-文本视图透明度,用于显示后面的应用程序

C GTK3-文本视图透明度,用于显示后面的应用程序,c,textview,transparency,gtk3,C,Textview,Transparency,Gtk3,我目前正在开发一个名为Xpad的现有Linux应用程序,这是一个用C编写的便笺应用程序。我试图实现透明性,但我很难实现我想要的。便签是这样的 我有一个带有gtk_文本视图的(顶级)gtk_窗口。 如果使用函数gtk_widget_override_background_color()将textview的背景色设置为透明色(alpha值小于1的GdkRGBA),则其后面的gtk_窗口的颜色将变得更可见 但是,我不想看到gtkèU窗口,而是希望看到gtkèU窗口后面的应用程序,例如浏览器、libr

我目前正在开发一个名为Xpad的现有Linux应用程序,这是一个用C编写的便笺应用程序。我试图实现透明性,但我很难实现我想要的。便签是这样的

我有一个带有gtk_文本视图的(顶级)gtk_窗口。 如果使用函数gtk_widget_override_background_color()将textview的背景色设置为透明色(alpha值小于1的GdkRGBA),则其后面的gtk_窗口的颜色将变得更可见

但是,我不想看到gtkèU窗口,而是希望看到gtkèU窗口后面的应用程序,例如浏览器、libreoffice或桌面

如果gtk_窗口设置为特定透明度,使用gtk_窗口小部件覆盖_背景_颜色()或gtk_窗口小部件设置_不透明度(),则整个窗口小部件(包括窗口装饰)变为(部分)透明

为了使可见对象之间的关系更加清晰,我创建了一个不同部分的图表,并标记了我认为发生透明度问题的地方


有人知道如何使textview背景透明,而不使窗口装饰透明,这样我就可以看到此应用程序背后的内容了吗?

为小部件设置适当的RGBA视觉效果

w = //some GtkWidget or GtkWidget derived klass (i.e. GtkWindow)
gtk_widget_set_app_paintable (w, TRUE); // important or you will get solid color

// the next 3 lines should be wrapped in a func which is also hooked to "screen-changed"
GdkScreen *screen = gtk_widget_get_screen (w);
GdkVisual *visual = gdk_screen_get_rgba_visual (screen);
gtk_widget_set_visual(w, visual);

gtk_widget_show_all(w);



g_signal_connect(G_OBJECT(w), "screen-changed", G_CALLBACK(screen_changed_contaniing_above_code), NULL);

嗨,德拉纳!我曾尝试在我的颜色更新程序函数中实现上述功能,但没有成功。这可能是我有限的编程技能。你介意帮我吗?您可以使用bzr(类似于GIT)检查代码:“bzr branch lp:~arthurborsboom/xpad/xpad-4.3”现在不行,我至少还有两周没有记录在案。