0

我正在用 GTK# 编写一个简单的文件浏览器。我想在 DrawingArea 内绘制目录的库存图像。我不想加载外部图像。我想使用 Gdk.PixBuf 但不知道如何加载库存图像。

4

2 回答 2

2

有几种方法可以做到这一点,但我相信gtk_icon_theme_load_icon()是不被弃用并且与大多数 GTK+ 版本兼容的方法。您将需要一个图标 GtkIconTheme 作为参数,但在大多数情况下 gtk_icon_theme_get_default() 是您想要的。图标名称参数来自图标命名规范

于 2013-09-23T10:55:02.417 回答
0

好的,所以在 DrawingArea 中渲染库存项目有点棘手。

private Gdk.GC gc;
private Gdk.Pixbuf pixbuf;

public MainWindow (): base (Gtk.WindowType.Toplevel)
{
    Build ();
    this.gc = new Gdk.GC((Gdk.Drawable)this.browserArea.GdkWindow);
//the method below does the trick. It is the only method I found that will return
//a valid pixbuf, so you can easily draw with the "usual" DrawPixbuf method in the 
//ExposeEvent
    this.pixbuf = RenderIcon(Gtk.Stock.Cdrom, IconSize.Dialog, "");
    this.browserArea.ExposeEvent += new ExposeEventHandler(OnExposeEvent);
}

protected void OnExposeEvent(object sender, ExposeEventArgs args){
    this.browserArea.GdkWindow.DrawPixbuf(this.gc, this.pixbuf,0,0,20,20,-1,-1,Gdk.RgbDither.None,0,0);
}
于 2013-09-23T10:49:23.133 回答