2010-11-13 161 views
3

我想將圖像轉換爲圖標。我的作用是:爲什麼Image.Save(Stream,ImageFormat)拋出異常?

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); 
    } 
} 

但程序調用方法時,它在那裏我打電話icon.Save拋出ArgumentNullException("encoder")

我覺得這很奇怪,因爲我沒有傳入一個編碼器,我想讓框架找出編碼器應該是什麼,這就是爲什麼我要傳遞一個ImageFormat

是不是ImageFormat.Icon沒有任何編碼器,還是有什麼我做錯了?

+0

@abatishchev:這是怎麼了[英國法術程序( http://dictionary.reference.com/browse/programme):p – 2010-11-13 10:57:10

+0

謝謝,@Matt,並對不起:) – abatishchev 2010-11-13 11:24:38

回答

4

只是轉換圖像圖標:

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

,然後使用流保存:

myIcon.Save(myStream); 

問候, 凱特

+1

謝謝,SmartK8。我知道這一點,但它在部分信任方案中無效。 – 2011-01-24 19:42:46

+0

以上作品很棒:)謝謝。 – TomeeNS 2013-10-10 21:25:48

+0

這會泄漏Hicon指針。 – 2016-11-14 10:20:07

相關問題