C# 仅从流c XP创建图像或位图的参数无效

C# 仅从流c XP创建图像或位图的参数无效,c#,stream,windows-xp,gdi+,embedded-resource,C#,Stream,Windows Xp,Gdi+,Embedded Resource,我相信我所做的是相当标准的。我通过调用资源上的GetManifestResourceStream,为其提供.ico文件的路径,从嵌入式资源创建了一些图像: Bitmap bmp = new Bitmap(Assembly.GetEntryAssembly().GetManifestResourceStream("MeterView.Resources.unlocked.ico")); 然后使用位图在我的表单上显示图像。这在Windows7和Windows8上一直工作得很好,但现在当我尝试在XP

我相信我所做的是相当标准的。我通过调用资源上的GetManifestResourceStream,为其提供.ico文件的路径,从嵌入式资源创建了一些图像:

Bitmap bmp = new Bitmap(Assembly.GetEntryAssembly().GetManifestResourceStream("MeterView.Resources.unlocked.ico"));
然后使用位图在我的表单上显示图像。这在Windows7和Windows8上一直工作得很好,但现在当我尝试在XP SP3框上运行应用程序时,我在将流转换为位图的行上得到了无效的参数。我还尝试使用Image.FromStream,但结果相同

资源上的生成操作设置为Embedded resource。有人知道我怎样才能避开这个问题吗?我还尝试重置流,这也没有什么区别

提前感谢您的建议


图标文件来自此应用程序的原始版本,它是用Visual Basic为XP编写的。我相信它们是用VB手工生成的。我已经回收了所有这些图标,以便用C重写此应用程序。这是我第一次遇到问题。

感谢所有建议。我确实尝试过将代码分解成单独的行,事实上这是从流中创建位图的过程。在几个不同的XP系统上失败,所有系统都运行SP3并安装了.NET 4 framework


将原始ico文件转换为png文件,然后将其转换为位图,图像质量不会明显下降。

这些ico文件来自何处?他们有什么类型的内容?Windows Vista在ICO文件中引入了对PNG的支持,通常用于较大的图标,例如256x256如果我没记错的话,XP不支持较新的基于PNG的ICO文件。您可能正在使用此较新格式的ICO吗?这些图标文件创建于2003年,是为XP和早期系统开发的。是否有可能运行不同版本的框架?1:确保您的windows XP是最新的,而不是等待.net更新。2:将代码分成几行,一行是GetManifestResourceStream,另一行是new Bitmap..等等,然后逐步通过调试器查看错误的确切位置,是加载流还是尝试创建图像。