WPF应用程序显示“图像格式无法识别”

时间:2012-09-12 09:31:45

标签: wpf

我有一个在Windows 7操作系统上运行良好的WPF应用程序。但是同一个应用程序在特定的几台Windows XP计算机上崩溃了。

它在几台Windows XP机器上运行良好。但是在一些XP机器上它无法启动。

  

错误 - 图像格式无法识别。

我知道这个问题已被问过几次。但我的问题是我仍然无法弄清楚如何解决这个问题。

我应该更改用于应用程序的.ico ..

5 个答案:

答案 0 :(得分:10)

不幸的是,当你想支持Windows Vista,7,8和转发的大图标大小时,简单地删除256x256应用程序并不是最好的解决方案。

解决此问题的另一种方法是不压缩图标中的256x256图像。有关详细信息,请参阅此forum thread

如何做到这一点?好吧,大多数图标实用程序都有一个选项(因为这是一个常见的问题)。我使用IcoFX以下您可以看到我需要清除的选项(以红色突出显示)。

IcoFX Screenshot

答案 1 :(得分:6)

今天早上我对这个问题有点乐趣。事实证明,错误仅发生在颜色设置为16位的XP机器上,当我将其更改为32位时,问题神奇地消失了。

这适用于XP(包括嵌入式)SP3。

答案 2 :(得分:2)

如果我没记错,Windows XP不支持大于48x48 pixels的图标,这可能是导致崩溃的原因。 .ico个文件肯定应该在两个系统上运行。

您可以创建一个支持多种尺寸的图标,因此如果您在同一个文件中添加48x48和256x256,那么您应该会很好。另外,在制作支持多种尺寸的图标时,请务必使用选择一个好的软件来生成图标。我使用了Greenfish Icon Editor,我觉得它很好。但是有很多其他产品可供选择。

请务必阅读The ICON handbook, section Windows,其中包含有关要使用的图标大小和位深度的详细信息。


SO上的其他主题支持我的信念:

problems with icon image

Which icon sizes should my Windows application's icon include?

答案 3 :(得分:2)

在您的WPF应用程序中,您将至少有两个位置来设置图标:

  1. 应用程序图标。这用于在资源管理器,桌面等中显示应用程序。您可以在项目属性中设置它。
  2. 窗口图标。这在窗口的左上角用作图标,也可以用于alt-tabbing和任务栏。您将其设置为窗口上的Icon属性。
  3. 通常,您可以在两种情况下使用相同的图标文件。但是,如果您有一个压缩的256x256图标作为窗口图标,那么这可能会在Windows XP中崩溃。这就是您所经历的。另一方面,当应用程序图标具有压缩的256x256图标时,情况并非如此。

    所以另一个解决方案(我在我的所有项目中实现)是有两个图标:应用程序图标(包含所有大小)和一个特殊的“窗口图标”版本,它只包含16x16和32x32的大小(因为那些是唯一使用的尺寸。)

答案 4 :(得分:0)

(16/32位分辨率问题)的另一个解决方法是不在XAML中定义图标,而是在代码中加载它:

 this.Icon = new BitmapImage(new Uri("pack://application:,,,/UserInterface;component/Resources/Icons/ReportViewer.ico"));
相关问题