【发布时间】:2012-09-05 07:03:57
【问题描述】:
我有一个在 Windows 7 操作系统上运行良好的 WPF 应用程序。但是同一个应用程序在特定的少数 Windows XP 机器上崩溃。
它在少数 Windows XP 机器上运行良好。但在一些 XP 机器上它无法启动。
错误 - 图像格式无法识别。
我知道这个问题已经被问过几次了。但我的问题是我仍然无法弄清楚如何解决这个问题。
我是否应该更改用于应用程序的.ico ..
【问题讨论】:
标签: wpf
我有一个在 Windows 7 操作系统上运行良好的 WPF 应用程序。但是同一个应用程序在特定的少数 Windows XP 机器上崩溃。
它在少数 Windows XP 机器上运行良好。但在一些 XP 机器上它无法启动。
错误 - 图像格式无法识别。
我知道这个问题已经被问过几次了。但我的问题是我仍然无法弄清楚如何解决这个问题。
我是否应该更改用于应用程序的.ico ..
【问题讨论】:
标签: wpf
很遗憾,当您想要支持 Windows Vista、7、8 及更高版本的大图标尺寸时,简单地删除 256x256 应用程序并不是最佳解决方案。
解决此问题的另一种方法...是不压缩图标中的 256x256 图像。请参阅此forum thread 了解更多信息。
如何做到这一点?好吧,大多数图标实用程序都有一个选项(因为这是一个常见问题)。我使用IcoFX,您可以在下面看到我需要清除的选项(以红色突出显示)。
【讨论】:
今天早上我对这个问题感到很开心。原来,这个错误只发生在颜色设置为 16 位的 XP 机器上,当我将其更改为 32 位时,问题就神奇地消失了。
这适用于 XP(包括嵌入式)SP3。
【讨论】:
如果我没记错的话,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?
【讨论】:
在您的 WPF 应用程序中,您至少有两个地方可以设置图标:
通常,您可以在两种情况下使用相同的图标文件。但是,如果您有一个压缩的 256x256 图标作为窗口图标,那么这可能会在 Windows XP 中崩溃。这就是你正在经历的。另一方面,当应用程序图标具有压缩的 256x256 图标时,情况并非如此。
所以另一个解决方案(我在所有项目中实现)是有两个图标:应用程序图标(包含所有尺寸)和一个特殊的“窗口图标”版本,它只包含尺寸 16x16 和 32x32(因为那些是唯一使用的尺寸)。
【讨论】:
另一个解决方法(16/32 位分辨率问题)不是在 XAML 中定义图标,而是在代码中加载它:
this.Icon = new BitmapImage(new Uri("pack://application:,,,/UserInterface;component/Resources/Icons/ReportViewer.ico"));
【讨论】: