WinForms中的图像资源

时间:2010-06-06 15:32:54

标签: winforms

我想将图像存储在.dll文件中,并将它们用于我的winform应用程序。但我无法加载.dll内容

   System.IO.Stream stream;
   System.Reflection.Assembly assembly;
   Image bitmap;
   assembly = System.Reflection.Assembly.LoadFrom(Application.ExecutablePath);
   stream = assembly.GetManifestResourceStream("global::template.Properties.Resources.test.png");
   bitmap = Image.FromStream(stream);
   this.background.titleImage = bitmap; // image box

2 个答案:

答案 0 :(得分:2)

最可能的问题是您在GetManifestResourceStream()中指定的路径不正确。

我发现以下内容有助于调试这些问题:

  1. 在Reflector中打开嵌入了资源的程序集。
  2. 打开Resources文件夹。
  3. 从资源路径\文件夹列表中,找到包含资源的文件夹。
  4. 如果找不到资源,是否将其标记为嵌入资源?
  5. 您的资源路径为“资源文件夹”+“”。 +“资源名称”。
  6. e.g。 “PrismDemo.Properties.Resources.resources.app.ico”

答案 1 :(得分:2)

您使用了错误的名称,“global ::”未出现在清单资源名称中。如果您将资源添加到项目并将其Build Action设置为“Embedded Resource”,则典型名称将是 project .test.png。为避免猜测名称,请使用Ildasm.exe并在清单中找到.mresource。

但是,您的名字建议您在Project + Properties,Resources选项卡中添加资源。好主意,自动生成资源的属性名称。您可以使用 project .Properties.Resources.test来引用它。你将得到一个Image,不需要使用GetManifestResourceStream。

上面列出的项目名称是您分配给项目的默认命名空间名称。 Project + Properties,Application选项卡,Default namespace setting。