26
mai
2013
[Vala] Avoir un fond de widget transparent (Gtk+-3.0,Cairo)
mai
2013
Un article de Rachel
Pas de commentaires
j’ai enfin réussi à obtenir un widget transparent. Pour cela, il ne faut pas changer la couleur rgba du fond. Cela n’aura pour seul effet un fond noir. Il faut à la place « découper » votre widget avec Cairo :
using GLib;
using Gtk;
using Cairo;
public static void main(string[] args){
Gtk.init(ref args);
double i = 1;
var win = new Window();
win.set_border_width(30);
var s = win.get_screen();
var v = s.get_rgba_visual();
win.set_visual(v);
win.destroy.connect(Gtk.main_quit);
var box = new Box(Orientation.VERTICAL,0);
var btn3 = new Button();
var img = new Image.from_icon_name("media-playback-start",IconSize.BUTTON);
img.draw.connect((context)=>{
context.set_operator(Operator.CLEAR);
context.paint();
context.set_operator(Operator.OVER);
return false;
});
btn3.add(img);
box.pack_start(btn3);
win.set_app_paintable(true);
win.add(box);
win.show_all();
Gtk.main();
}
using Gtk;
using Cairo;
public static void main(string[] args){
Gtk.init(ref args);
double i = 1;
var win = new Window();
win.set_border_width(30);
var s = win.get_screen();
var v = s.get_rgba_visual();
win.set_visual(v);
win.destroy.connect(Gtk.main_quit);
var box = new Box(Orientation.VERTICAL,0);
var btn3 = new Button();
var img = new Image.from_icon_name("media-playback-start",IconSize.BUTTON);
img.draw.connect((context)=>{
context.set_operator(Operator.CLEAR);
context.paint();
context.set_operator(Operator.OVER);
return false;
});
btn3.add(img);
box.pack_start(btn3);
win.set_app_paintable(true);
win.add(box);
win.show_all();
Gtk.main();
}