"图像格式无法识别"取决于显示器

时间:2012-01-23 12:38:49

标签: c# wpf .net-4.0 windows-xp icons

我们有一个C#WPF项目(.NET 4.0,Visual Studio 2010)。它已在Windows XP和Windows 7上进行了测试,似乎运行良好,但现在我收到了两个客户的报告(两者都位于西班牙由于某种原因)无法启动软件。

查看日志文件,我看到他们得到“图像格式无法识别”异常(引起:HRESULT异常:0x88982F07)。

我已经搜索了错误,我发现这似乎是WPF无法在Windows XP上加载Vista PNG图标。但是这些报告已经有几年了,当然微软现在已经解决了这个问题(?),在我的情况下,它在大多数XP安装上都可以正常工作。我真的不想在最近的Windows上限制图标外观。

我们的应用程序最常见的用途是笔记本电脑,其中一位用户报告称,当他将笔记本电脑连接到外接显示器时问题得到了解决。当我让另一个人测试同样的东西时,他也有同样的结果。

所以我的问题是:你知道微软是否解决了这个问题?你知道为什么它只发生在某些Windows XP实例上以及它与显示器的关系吗?最重要的是,你知道如何在不改变图标的​​情况下使我们的应用程序更加健壮吗?

3 个答案:

答案 0 :(得分:2)

我今天遇到了同样的错误,只是在我的开发机器上。 WPF的实现似乎仍然存在问题。

如果我理解这一点(article),那么它可以在任何地方读取ICO文件。在我的例子中,它是在XAML中为主应用程序窗口设置一个图标时:

<Window x:Class="MyApp.MainWindow"  Icon="Dashboard.ico" >

以上代码突然失败,但使用PNG文件解决了问题:

<Window x:Class="MyApp.MainWindow"  Icon="Dashboard.png" >

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

这个问题让我脱掉了很长一段时间,我花了很长时间才弄清楚发生了什么事情,所以我会分享我的结论,因为它可能会帮助别人(甚至可能是我自己)在将来):

  

https://social.msdn.microsoft.com/Forums/vstudio/en-US/9e723d51-0e26-4609-8fe1-5e0edcf7385b/setting-windowicon-to-vista-256x256-png-icon-causes-a-fileformatexception?forum=wpf   似乎表明,如果你不压缩图标,它将自行解决。    - 约阿希姆·伊萨克森 2012年1月23日12:44

所以我抬头看了icoFx(用于我的图标编辑),果然:

options window in icoFx

我只是取消选中此项并再次保存我的.ico(大小从30Kb升至286Kb!)并且瞧!

问题解决了