11

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

它在少数 Windows XP 机器上运行良好。但在一些 XP 机器上它无法启动。

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

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

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

4

5 回答 5

10

不幸的是,当您希望支持 Windows Vista、7、8 及更高版本的大图标大小时,简单地删除 256x256 应用程序并不是最佳解决方案。

解决这个问题的另一种方法......是不压缩图标中的256x256图像。有关更多信息,请参阅此论坛主题

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

IcoFX 截图

于 2013-11-14T17:54:52.897 回答
7

今天早上我对这个问题感到很开心。事实证明,该错误仅发生在颜色设置为 16 位的 XP 机器上,而当我将其更改为 32 位时,问题就神奇地消失了。

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

于 2014-06-11T07:31:37.060 回答
3

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

您可以创建一个支持多种尺寸的图标,因此如果您在同一个文件中添加 48x48 和例如 256x256,您应该会很好。在制作支持多种尺寸的图标时,请务必使用选择好的软件制作图标。我使用了我认为效果很好的Greenfish 图标编辑器。但是还有许多其他产品可以做到这一点。

请务必阅读ICON 手册,Windows 部分,它包含有关要使用的图标大小和位深度的良好信息。


SO上的其他线程支持我的信念:

图标图像的问题

我的 Windows 应用程序的图标应包括哪些图标尺寸?

于 2012-09-12T09:42:43.657 回答
3

在您的 WPF 应用程序中,您至少有两个地方可以设置图标:

  1. 应用程序图标。这用于在资源管理器、桌面等中显示应用程序。您可以在项目属性中设置它。
  2. 窗口图标。这用作窗口左上角的图标,也可能用于 alt-tabbing 和任务栏上。您将其设置为窗口上的 Icon 属性。

通常,您可以在这两种情况下使用相同的图标文件。但是,如果您有一个压缩的 256x256 图标作为窗口图标,那么这可能会在 Windows XP 中崩溃。这就是你正在经历的。另一方面,当应用程序图标具有压缩的 256x256 图标时,情况并非如此。

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

于 2013-11-15T11:09:11.307 回答
1

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

 this.Icon = new BitmapImage(new Uri("pack://application:,,,/UserInterface;component/Resources/Icons/ReportViewer.ico"));
于 2014-12-22T15:30:28.310 回答