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

WPF应用程序显示;“图像格式无法识别”;,wpf,Wpf,我有一个WPF应用程序,它在Windows7操作系统上运行良好。但同一个应用程序在特定的几个Windows XP机器上崩溃 它在少数windows XP机器上运行良好。但在少数XP机器上,它无法启动 错误-无法识别图像格式 我知道这个问题已经被问了好几次了。但我的问题是,我仍然不知道如何解决这个问题 如果我没有记错,Windows XP不支持大于48x48像素的图标,这可能是崩溃的原因,我是否应该更改应用程序使用的.ico.ico文件肯定应该在两个系统上运行 您可以创建一个支持多种尺寸的图标,因

我有一个WPF应用程序,它在Windows7操作系统上运行良好。但同一个应用程序在特定的几个Windows XP机器上崩溃

它在少数windows XP机器上运行良好。但在少数XP机器上,它无法启动

错误-无法识别图像格式

我知道这个问题已经被问了好几次了。但我的问题是,我仍然不知道如何解决这个问题


如果我没有记错,Windows XP不支持大于
48x48像素的图标,这可能是崩溃的原因,我是否应该更改应用程序使用的
.ico

.ico
文件肯定应该在两个系统上运行

您可以创建一个支持多种尺寸的图标,因此,如果在同一文件中添加48x48,例如256x256,您应该可以。在制作支持多个尺寸的图标时,请确保使用“选择好的软件”来生成图标。我用过,我觉得很好用。但也有很多其他的产品用于此

请务必阅读,它包含了关于图标大小和位深度的有用信息


其他线程支持我的信念:


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

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

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


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

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


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

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

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

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

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

    谢谢@Avada Kedavra。。但它在少数机器上运行绝对正常。。这和决心有关吗?决心。。听起来很牵强。但是我真的不知道。这个bug的图标是256X256。。现在很好用。。谢谢你的链接。。感谢…我感谢这篇帖子(),里面有论坛链接的答案。。。这是最初的灵感/解决方案。压缩带来了很大的不同,我的图标从39kb变为288kb。@tofutim,是的,这是正确的。。但是,如果你想支持Windows XP,这是必要的。+1很好的观察。你救了我的一天:)。这有助于我了解16位颜色的RDP会话导致我的应用程序崩溃,尽管我能够从32位颜色的VNC会话启动它。