1

如何将Gdk.Pixbuf(_pixbuf 下面) 转换为 Windows 窗体 ( System.Drawing) 位图?下面是使用的代码Gtk.DotNet.Graphics,但它只给出了一个白色的图像。有没有更好、更直接的方法有效?我在 Mono 上使用 C#,但如果你有另一种语言的答案,我可以转换。

public System.Drawing.Bitmap toBitmap () {
    Gdk.Pixmap pixmap, mask;
    _pixbuf.RenderPixmapAndMask(out pixmap, out mask, 255);
    System.Drawing.Graphics graphics = Gtk.DotNet.Graphics.FromDrawable(pixmap);
    return new System.Drawing.Bitmap(width, height, graphics);
}
4

1 回答 1

2

您可以使用此扩展方法:

using System.ComponentModel;
using System.Drawing;

public static class MyExtensions
{
    public static System.Drawing.Bitmap ToBitmap(this Pixbuf pix)
    {
        TypeConverter tc = TypeDescriptor.GetConverter(typeof(Bitmap));

        //// Possible file formats are: "jpeg", "png", "ico" and "bmp"
        return (Bitmap)tc.ConvertFrom(pix.SaveToBuffer("jpeg")); 
    }
}

用法:

{
    Pixbuf pxb = new Pixbuf(pixSource);
    Bitmap bmp = pxb.ToBitmap();
}
于 2013-04-08T03:31:13.943 回答