使用项目中包含的图像

时间:2013-10-29 19:37:03

标签: c# .net winforms image

我已将图片logo.bmp添加到我的项目中,但我无法弄清楚如何将其分配到Image类型。我首先创建了变量:

public static Image logo { get; set; }

但我无法弄清楚如何将图像分配给它。这就是我现在所拥有的:

logo = Image.FromFile("logo.bmp");

但是假设图像位于.exe目录中。这样做的正确方法是什么?

2 个答案:

答案 0 :(得分:4)

您可以使用System.Reflection.Assembly.GetManifestResourceStream从已加载的程序集加载资源。

首先,您必须确保Visual Studio项目中的文件实际嵌入到程序集本身中。右键单击该文件并选择属性,然后确保构建操作嵌入式资源

现在,您可以从同一程序集中的代码调用Assembly.GetManifestResourceStream,并使用完全限定的命名空间指定资源名称,例如"YourSolution.YourProject.Images.logo.bmp"

您正在使用的Image类有一种从名为Image.FromStream()的流加载的方法。

以下是您可能会执行的操作的代码段:

Image image;

var stream = Asssembly.GetExecutingAssembly().GetManifestResourceStream("MySolution.MyProject.Images.logo.bmp");

image = Image.FromStream(stream);

请记住,当以这种方式加载时,您可能需要将图像与图像分开处理。

答案 1 :(得分:0)

Assembly类是System.Reflection命名空间的一部分。使用Assembly.GetExecutingAssembly()的替代方法是

typeof(YourClassName).Assembly.GetManifestResourceStream("path.to.your.resource")

这样,您可以使用类型来确定要从哪个程序集访问资源。