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

画像をアイコンに変換するだけです:

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

次に、ストリームを使用して保存します。

myIcon.Save(myStream);

よろしく、ケイト

于 2011-01-24T14:29:49.083 に答える
5

ご想像のとおり、GDI+はデコーダーのみをサポートします。ICON

自分で変換を実行することをお勧めします。その場合は、http://www.codeproject.com/KB/GDI-plus/safeicon.aspxを参照してください。

于 2010-11-13T10:59:37.047 に答える