我想在 gtk 容器中添加纹理作为背景,可以吗?
我想要的类似于 css 中的 repeat-x repeat-y 属性,但是 gtk 还不支持它,那么,如何在没有任何丑陋的黑客攻击的情况下做到这一点?另一个例子是鹦鹉螺有什么,你可以改变背景。
谢谢 :)
PD:对不起 4 ma 英语
我想在 gtk 容器中添加纹理作为背景,可以吗?
我想要的类似于 css 中的 repeat-x repeat-y 属性,但是 gtk 还不支持它,那么,如何在没有任何丑陋的黑客攻击的情况下做到这一点?另一个例子是鹦鹉螺有什么,你可以改变背景。
谢谢 :)
PD:对不起 4 ma 英语
我是这样做的:
private bool draw_background (Cairo.Context cr) {
int width = this.get_allocated_width ();
int height = this.get_allocated_height ();
cr.set_operator (Cairo.Operator.CLEAR);
cr.paint ();
cr.set_operator (Cairo.Operator.OVER);
var background_style = this.get_style_context ();
background_style.render_background (cr, 0, 0, width, height);
background_style.render_frame (cr, 0, 0, width, height);
var pat = new Cairo.Pattern.for_surface (new Cairo.ImageSurface.from_png (Build.PKGDATADIR + "/files/texture.png"));
pat.set_extend (Cairo.Extend.REPEAT);
cr.set_source (pat);
cr.paint_with_alpha (0.6);
return false;
}