我有一个在Windows 7操作系统上运行良好的WPF应用程序。但是同一个应用程序在特定的几台Windows XP计算机上崩溃了。
它在几台Windows XP机器上运行良好。但是在一些XP机器上它无法启动。
错误 - 图像格式无法识别。
我知道这个问题已被问过几次。但我的问题是我仍然无法弄清楚如何解决这个问题。
我应该更改用于应用程序的.ico
..
答案 0 :(得分:10)
不幸的是,当你想支持Windows Vista,7,8和转发的大图标大小时,简单地删除256x256应用程序并不是最好的解决方案。
解决此问题的另一种方法是不压缩图标中的256x256图像。有关详细信息,请参阅此forum thread。
如何做到这一点?好吧,大多数图标实用程序都有一个选项(因为这是一个常见的问题)。我使用IcoFX以下您可以看到我需要清除的选项(以红色突出显示)。
答案 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上的其他主题支持我的信念:
Which icon sizes should my Windows application's icon include?
答案 3 :(得分:2)
在您的WPF应用程序中,您将至少有两个位置来设置图标:
通常,您可以在两种情况下使用相同的图标文件。但是,如果您有一个压缩的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"));