C# 如何在绘图区域内绘制GTK股票图像

C# 如何在绘图区域内绘制GTK股票图像,c#,gtk,gtk#,C#,Gtk,Gtk#,我正在用GTK编写一个简单的文件浏览器。我想在DrawingArea中绘制目录的股票图像。我不想加载外部图像。我开始使用Gdk.PixBuf,但不知道如何加载库存图像。好的,所以在DrawingArea中渲染库存项目有点困难 private Gdk.GC gc; private Gdk.Pixbuf pixbuf; public MainWindow (): base (Gtk.WindowType.Toplevel) { Build (); this.gc = new Gdk

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

好的,所以在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);
}

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

RenderIcon()指的是gtk_小部件_render_图标(),对吗?该函数当然是可用的,但值得承认的是,它已经在GTK+3.0中被弃用,该系列中的其他函数也将在GTK+3.10中被弃用。感谢您提供的信息。你的答案似乎更切合时宜。