2012-12-28 18 views
1

我相信我在做什么是非常标准的。我通过调用GetManifestResourceStream上的资源,给它的路径.ico文件创建嵌入资源的一些图片:无效的参数创建图像或从流c#XP的位图

Bitmap bmp = new Bitmap(Assembly.GetEntryAssembly().GetManifestResourceStream("MeterView.Resources.unlocked.ico")); 

位图,然后用我的表格上显示图像。这一直在Windows 7和8上完美运行,但现在当我尝试在XP SP3盒子上运行应用程序时,我在将该流转换为位图的行上出现“无效参数”。我也尝试使用Image.FromStream,但结果相同。

对资源的构建操作设置为嵌入式资源。任何人有任何想法如何解决这个问题?我也尝试重置流,这也没有什么区别。

在此先感谢您的任何建议。

图标文件来自此应用程序的原始版本,该应用程序是在Visual Basic中为XP编写的。我相信他们是在VB中手动生成的。我用C#重新编写了这个应用程序的所有这些图标。这是我第一次遇到问题。

+1

这些ICO文件来自哪里?他们有什么类型的内容? Windows Vista在ICO文件中引入了对PNG的支持,通常用于较大的图标(例如256x256) –

+0

如果我没有记错,XP不支持基于PNG的较新ICO文件。你可以使用这种新格式的ICO吗? –

+0

这些图标文件是在2003年创建的,是为XP和更早版本系统开发的。 – Gary

回答

0

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

将原始ico文件转换为png文件,然后将它们转换为位图作品,但图像质量没有明显的损失。