代码之家  ›  专栏  ›  技术社区  ›  Brann

如何在Winforms应用程序中使用.ico文件?

  •  2
  • Brann  · 技术社区  · 16 年前

    我正在开发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'  
    

    以下是我正在考虑的选择:

    • 创建所有可能大小的图像列表,引用主窗口中的所有图标。从其他窗口链接这些ImageList,并在无法直接使用ImageList时找到从ImageList导出图像对象的方法;因为ImageList包含draw()方法,所以这应该是可能的。
    • 转换几个x16.gif…x48.gif中的所有x.ico,并通过资源使用它们。

    我很想知道是否有人在winform应用程序中成功地使用了.ico资源。所以,你是怎么安排的?

    2 回复  |  直到 16 年前
        1
  •  3
  •   John Knoeller    16 年前

    ico并不是一种过时的格式,但它已经很接近了。它对于应用程序图标仍然很有用,但对于几乎所有其他内容,最好为所需的每个大小使用一个imagelist。从包含在网格中分层的多个图像的位图填充imagelist要快得多。

    您还希望在位图中使用alpha通道透明度来获得最佳结果,因此将它们作为.png文件存储在资源中是最好的方法,因为png支持alpha通道。ICO和GIF文件只支持一位透明-每个像素要么完全不透明,要么完全透明。8位alpha通道的透明度看起来更好。

    如果你可以把你的艺术家送回画板,那么你应该这样做,让他/她用alpha做完整的抗锯齿图像。如果你做不到,我建议你写一个小程序,把你所有的图标文件转换成适合加载到图像列表的位图。

        2
  •  3
  •   TomTom    16 年前

    将图像转换为PNG格式。点。不管是谁决定使用.ico文件开始,都应该私下里和他谈一谈——这个论点毫无根据。

    推荐文章