1

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

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

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

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

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

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

4

1 回答 1

0

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

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

于 2012-12-28T18:44:25.190 回答