2010-03-09 35 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

相关问题