我相信我所做的非常标准。我通过在资源上调用GetManifestResourceStream从嵌入式资源创建一些图像,为它提供.ico文件的路径:
Bitmap bmp = new Bitmap(Assembly.GetEntryAssembly().GetManifestResourceStream("MeterView.Resources.unlocked.ico"));
然后使用位图在表单上显示图像。这在Windows 7和8上一直都很完美,但是现在当我尝试在XP SP3盒子上运行应用程序时,我会在将流转换为位图的行上获得“无效参数”。我也尝试过使用Image.FromStream,但结果相同。
资源上的构建操作设置为Embedded Resource。任何人有任何想法如何解决这个问题?我也试过重置流,这也没有区别。
提前感谢任何建议。
图标文件来自此应用程序的原始版本,该版本是在Visual Basic中为XP编写的。我相信它们是在VB中手动生成的。我已经回收了所有这些图标,用于在C#中重写此应用程序。这是我第一次遇到问题。
答案 0 :(得分:0)
感谢所有建议。我确实尝试将代码分解为单独的行,实际上是从流中创建位图。在几个不同的XP系统上都失败了,所有XP系统都运行了安装了.NET 4框架的SP3。
将原始ico文件转换为png文件,然后将它们转换为位图工作,图像质量没有明显下降。