Gtk3透明容器

时间:2015-04-30 15:26:17

标签: css c transparent gtk3 glade

我正在开发Gtk3应用程序。因此,我使用Glade 3.16.1在Ubuntu上设计了窗口。 我有一个GtkWindow布局与垂直分隔GtkPaned。加载CSS文件我给窗口一个这样的背景图像:

GtkPaned#mainLayout {   
    background-color: transparent;
    /* OR: background-color: rgba(0, 0, 0, 0.0) */
    /* OR: background-image: none */
}

但似乎布局组件使用纯色绘制在其上,因此背景图像仅部分可见。你可以看到 here

我的第一次尝试是将布局的背景颜色设置为透明,但它没有改变任何东西(任何其他颜色都有效):

GtkWindow#window {
    background-color: #00FF00;
}
GtkPaned#mainLayout {   
    background-color: rgba(255, 0, 0, 0.5)
}

感谢您的帮助,

问候托马斯

PS:有没有人为Windows支持Gtk3(+ CSS)的Glade版本?我在他们的网站上只发现了Glade 3.8(CSS支持版本为3.16 / 3.18)。

编辑:以下是此问题的更好示例:

G_MODULE_EXPORT gboolean drawMainContainer(GtkWidget *widget, cairo_t *cr, gpointer data) {
    guint width, height;
    GdkRGBA color;

    width = gtk_widget_get_allocated_width (widget);
    height = gtk_widget_get_allocated_height (widget);
    cairo_rectangle (cr, 0, 0, width, height);

    gtk_style_context_get_color (gtk_widget_get_style_context (widget),
            0,
            &color);
    cairo_set_source_rgba (cr, 0, 0, 0, 0);
    cairo_fill (cr);    
    return FALSE;
}

- > Image with Alpha 50% / 0.5

你可以看到它看起来像红色和白色的混合。但我希望那种白色消失。

EDIT2: 我也试过覆盖绘制功能并用Cairo绘制透明矩形 - >没有成功。我的代码:

>> arrayfun(@(x,y) A(x,y), R, C)
ans =
     1     5
     1     5

0 个答案:

没有答案