我有一个在 Windows 7 操作系统上运行良好的 WPF 应用程序。但是同一个应用程序在特定的少数 Windows XP 机器上崩溃。
它在少数 Windows XP 机器上运行良好。但在一些 XP 机器上它无法启动。
错误 - 图像格式无法识别。
我知道这个问题已经被问过几次了。但我的问题是我仍然无法弄清楚如何解决这个问题。
我应该更改.ico
用于应用程序的..
我有一个在 Windows 7 操作系统上运行良好的 WPF 应用程序。但是同一个应用程序在特定的少数 Windows XP 机器上崩溃。
它在少数 Windows XP 机器上运行良好。但在一些 XP 机器上它无法启动。
错误 - 图像格式无法识别。
我知道这个问题已经被问过几次了。但我的问题是我仍然无法弄清楚如何解决这个问题。
我应该更改.ico
用于应用程序的..
今天早上我对这个问题感到很开心。事实证明,该错误仅发生在颜色设置为 16 位的 XP 机器上,而当我将其更改为 32 位时,问题就神奇地消失了。
这适用于 XP(包括嵌入式)SP3。
如果我没记错的话,Windows XP 不支持大于 的图标48x48 pixels
,这可能是崩溃的原因。.ico
文件绝对应该在两个系统上运行。
您可以创建一个支持多种尺寸的图标,因此如果您在同一个文件中添加 48x48 和例如 256x256,您应该会很好。在制作支持多种尺寸的图标时,请务必使用选择好的软件制作图标。我使用了我认为效果很好的Greenfish 图标编辑器。但是还有许多其他产品可以做到这一点。
请务必阅读ICON 手册,Windows 部分,它包含有关要使用的图标大小和位深度的良好信息。
SO上的其他线程支持我的信念:
在您的 WPF 应用程序中,您至少有两个地方可以设置图标:
通常,您可以在这两种情况下使用相同的图标文件。但是,如果您有一个压缩的 256x256 图标作为窗口图标,那么这可能会在 Windows XP 中崩溃。这就是你正在经历的。另一方面,当应用程序图标具有压缩的 256x256 图标时,情况并非如此。
所以另一个解决方案(我在所有项目中实现)是有两个图标:应用程序图标(包含所有尺寸)和一个特殊的“窗口图标”版本,它只包含尺寸 16x16 和 32x32(因为这些是唯一的使用的尺寸)。
另一种解决方法(16/32 位分辨率问题)不是在 XAML 中定义图标,而是在代码中加载它:
this.Icon = new BitmapImage(new Uri("pack://application:,,,/UserInterface;component/Resources/Icons/ReportViewer.ico"));