我想把Gtk+窗口的背景变成透明的,这样只有窗口中的小部件才能看到。我找到了一些教程:
http://mikehearn.wordpress.com/2006/03/26/gtk-windows-with-alpha-channels/
http://macslow.thepimp.net/?p=26
但是它们似乎都在监听“expose”事件,然后委托Cairo进行渲染,这意味着添加到窗口中的其他小部件不会被渲染(例如,我也尝试过在窗口中添加一个按钮)。
我看到GtkWidget上有一个方法modify-bg:http://library.gnome.org/devel/gtk/stable/GtkWidget.html#gtk-widget-modify-bg
但是,GdkColor似乎不接受透明度参数:http://library.gnome.org/devel/gdk/stable/gdk-Colormaps-and-Colors.html
我也尝试过GtkWindow.set_opacity方法,但是这也设置了窗口内容的不透明度,这不是我想要的。
我很感激任何人能在这方面提供任何指导。
5条答案
按热度按时间szqfcxe21#
我更改了alphademo示例,以绘制一个按钮而不是红色圆圈。
这个应用程序会在400 x400的透明 windows 上绘制按钮。
单击窗口时,应用程序将显示/隐藏标题栏。
在Ubuntu 10.04上编译:
holgip5t2#
谢谢你的回答。我用python + GTK3重写代码:
mrphzbgm3#
谢谢你的代码,这正是我所需要的,虽然它需要修改以工作GTK3。此外,暴露事件需要改为一个'draw'事件,以使其工作。所以这里是我的代码贡献修改为GTK3:
下面是我如何在Ubuntu 15.04上编译它:
希望这有助于其他人试图让它在GTK3上工作。
vptzau2j4#
对于那些使用golang的人,这里有一个使用gotk3(https://github.com/gotk3/gotk3)的例子:
5vf7fwbs5#
使用Gtk 3,您可以只设置背景颜色,请参阅override_background_color的文档(已弃用)
或者更恰当地说,通过使用CSS并将
background-color: rgba(...)
设置为主窗口。下面是后一种策略的代码示例,从here复制而来: