2010-03-09 69 views
2

我正在開發一個WinForms c#3.0應用程序。我們的設計師創造了很多包含所有藝術品的.ico文件。因爲很多時候都選擇了.ico,所以在不同維度的幾個地方需要同樣的圖像。如何在Winforms應用程序中使用.ico文件?

現在,它似乎.ico文件是真的惱人的使用在視覺工作室。使用這些圖像的唯一方法似乎是通過圖像列表(所有控件都不支持)。 相比其他資源,你不能這樣寫:

foo.Image = global::RFQHUB.RFQHUBClient.Properties.Resources.foo; // Cannot implicitly convert type 'System.Drawing.Icon' to 'System.Drawing.Image' 

這裏是我考慮的選項:

  • 創造一切可能的大小引用我的所有圖標在我的主窗口中的圖像列表。從其他窗口鏈接這些ImageLists並找到一種方法,當我無法直接使用它時,從ImageList中導出Image對象;因爲ImageList包含一個Draw()方法,所以這應該是可能的。
  • 轉換所有的x.ico我有幾個x16.gif ... x48.gif,並通過資源使用它們。

我很想知道一些人是否已經在Winform應用程序中成功使用過.ico資源。那麼,你是如何設置的?

回答

3

ICO不是一個過時的格式,但它很接近。它對你的應用程序圖標仍然有用,但對於其他任何應用程序圖標來說,最好對每個你需要的大小使用一個ImageList。從包含多個圖像的位圖中填充ImageList會更快。

您還想在位圖中使用Alpha通道透明度以獲得最佳效果,因此將它們作爲.PNG文件存儲在資源中是最好的方法,因爲PNG支持Alpha通道。 ICO和GIF文件僅支持透明度的單個位 - 每個像素都完全不透明或完全透明。透明度爲8位的Alpha通道看起來好多了。

如果您可以將您的藝術家送回繪圖板,那麼您應該這樣做,並讓他/她使用alpha進行完整的反鋸齒圖像。如果您不能,那麼我建議您編寫一個小程序將所有圖標文件轉換爲適合加載到ImageLists的位圖。

+0

IcoFX(http://icofx.ro/)是一個免費軟件,支持從.ico到.png的批量轉換。整個轉換過程花費我大約10幾百個文件 – Brann 2010-03-09 10:47:07

2

將圖像轉換爲PNG。點。無論誰決定使用.ico文件開始都應該私下討論 - 這個論點沒有根據。

+1

「期間」比「點」更普遍。 – 2011-12-04 19:52:17

相關問題