5

我正在尝试将图像转换为图标。我的功能是:

private Icon GenerateIcon(int width, int height)
{
    using (Bitmap icon = _backingImage.GetThumbnailImage(width, height, () => false, System.IntPtr.Zero) as Bitmap)
    using(MemoryStream imgStream = new MemoryStream())
    {
        icon.Save(imgStream, System.Drawing.Imaging.ImageFormat.Icon);
        return new Icon(imgStream);
    }
}

但是当程序调用该方法时,它会抛出一个ArgumentNullException("encoder")我正在调用的地方icon.Save

我觉得这很奇怪,因为我没有传入编码器,我希望框架弄清楚编码器应该是什么,这就是为什么我要传入ImageFormat.

是没有任何编码器ImageFormat.Icon,还是我做错了什么?

4

2 回答 2

5

你猜对了:GDI+只支持ICON 解码器

您可能希望自己执行转换。在这种情况下,请参阅http://www.codeproject.com/KB/GDI-plus/safeicon.aspx

于 2010-11-13T10:59:37.047 回答
5

只需将图像转换为图标:

Icon myIcon = Icon.FromHandle(((Bitmap)myImage).GetHicon())

然后使用流保存它:

myIcon.Save(myStream);

问候, 凯特

于 2011-01-24T14:29:49.083 回答