1

我有一個簡單的函數,它需要一個位圖,並將該位圖轉換爲ICON格式。以下是功能。 (我把字面值代替變量)從位圖到圖標的圖像轉換似乎不起作用

Bitmap tempBmp = new Bitmap(@"C:\temp\mypicture.jpeg"); 
    Bitmap bmp = new Bitmap(tempBmp, 16, 16); 
    bmp.Save("@C:\temp\mypicture2.ico", ImageFormat.Icon) 

它似乎沒有正確地轉換......或者我想。圖像轉換後,某些瀏覽器不會將圖像重新映射爲真正的「ICON」,甚至Visual Studio 2008在將圖像轉換爲圖標格式後也不會將圖像重新映射爲圖標。

例如,我打算爲剛剛轉換的圖標設置我的Win32表單應用的Icon屬性。我打開了撥號盒並選擇了我剛剛轉換的圖標並出現以下錯誤。

- 「參數'圖片'必須是可以用作圖標的圖片。」

我瀏覽過網頁,遇到複雜的代碼,人們花時間手動將位圖轉換爲不同的格式,但我認爲上面的代碼應該可以工作,並且.NET框架將處理此問題轉換。

回答

2

我測試了下面的代碼,它工作但結果並不好。記住一個圖標有一個有限的調色板,你可能會失去一些顏色信息。

Bitmap b = new Bitmap(@"d:\file.jpg"); 
    Icon i = Icon.FromHandle(b.GetHicon()); 
    i.Save(File.Open(@"d:\file.ico", FileMode.OpenOrCreate, FileAccess.Write));