我正在开发一个WinForms c#3.0应用程序。我们的设计师创建了很多包含所有必需艺术品的.ico文件。选择.ico是因为经常在不同维度的几个地方需要相同的图像。
现在,似乎.ico文件真的在visual studio中使用时很烦人。使用这些图像的唯一方法似乎是通过图像列表(所有控件都不支持)。 与其他资源相比,你不能这样写:
foo.Image = global::RFQHUB.RFQHUBClient.Properties.Resources.foo; // Cannot implicitly convert type 'System.Drawing.Icon' to 'System.Drawing.Image'
以下是我正在考虑的选项:
我有兴趣知道是否有人在Winform应用程序中成功使用.ico资源。那么,你是如何设置的?
答案 0 :(得分:3)
将图像转换为PNG。点。决定使用.ico文件开始的人应该私下交谈 - 这个论点没有根据。
答案 1 :(得分:3)
ICO并不是一个过时的格式,但它已经接近了。它对您的应用程序图标仍然有用,但对于几乎所有其他内容,最好为您需要的每个大小使用ImageList。并且从包含网格中布置的多个图像的位图填充ImageList要快得多。
您还希望在位图中使用Alpha通道透明度以获得最佳效果,因此将其作为.PNG文件存储在资源中是最好的方法,因为PNG支持Alpha通道。 ICO和GIF文件仅支持单个位以实现透明度 - 每个像素都是完全不透明或完全透明的。用于透明度的8位alpha通道看起来更好。
如果您可以将您的艺术家送回绘图板,那么您应该这样做,并让他/她使用alpha做完全消除锯齿的图像。如果你不能,那么我建议你写一个小程序将你的所有图标文件转换成适合加载到ImageLists的位图。