Gtk.Viewport 背景透明度
Gtk.Viewport background transparency
我正在构建一个在 Gtk.ScrolledWindow 小部件中显示业务对象列表的应用程序。除了一个例外,这东西就像一个魅力。
因为我使用的是背景图像,所以我希望 ScrolledWindow 中的 Gtk.Viewport 是透明的(或者它是绘制白色背景的 ScrolledWindow?),以便背景图像可见。
我已经在谷歌上搜索了很多但找不到任何可行的解决方案,但我偶然发现了 post 提到视口实例应该已经是透明的?!
我正在使用 MonoDevelop 5.10.3 和 Gtk# for .Net 2.12.30。这是一个已知问题吗?有什么办法可以解决这个问题吗?
感谢任何帮助
因为 Gdk.Color 不支持 alpha,所以这不是直截了当的。您可以尝试使用 Cairo 来做到这一点,因为它支持 alphas,如果您挂钩到隐藏背景图像的小部件的公开事件,如下所示?
protected void aWidget_ExposeEvent (object o, ExposeEventArgs args)
{
using (Cairo.Context _cc = CairoHelper.Create (args.Event.Window)) {
_cc.SetSourceRGBA (1, 1, 1, 0);
_cc.Rectangle (0, 0, <WIDTH>, <HEIGHT>);
_cc.StrokePreserve ();
_cc.Fill ();
}
}
其中WIDTH和HEIGHT是你要清除的区域的大小。希望这可以帮助!祝你好运。
我正在构建一个在 Gtk.ScrolledWindow 小部件中显示业务对象列表的应用程序。除了一个例外,这东西就像一个魅力。
因为我使用的是背景图像,所以我希望 ScrolledWindow 中的 Gtk.Viewport 是透明的(或者它是绘制白色背景的 ScrolledWindow?),以便背景图像可见。
我已经在谷歌上搜索了很多但找不到任何可行的解决方案,但我偶然发现了 post 提到视口实例应该已经是透明的?!
我正在使用 MonoDevelop 5.10.3 和 Gtk# for .Net 2.12.30。这是一个已知问题吗?有什么办法可以解决这个问题吗?
感谢任何帮助
因为 Gdk.Color 不支持 alpha,所以这不是直截了当的。您可以尝试使用 Cairo 来做到这一点,因为它支持 alphas,如果您挂钩到隐藏背景图像的小部件的公开事件,如下所示?
protected void aWidget_ExposeEvent (object o, ExposeEventArgs args)
{
using (Cairo.Context _cc = CairoHelper.Create (args.Event.Window)) {
_cc.SetSourceRGBA (1, 1, 1, 0);
_cc.Rectangle (0, 0, <WIDTH>, <HEIGHT>);
_cc.StrokePreserve ();
_cc.Fill ();
}
}
其中WIDTH和HEIGHT是你要清除的区域的大小。希望这可以帮助!祝你好运。