1

我已将图像添加logo.bmp到我的项目中,但我不知道如何将其分配给Image类型。我从创建变量开始:

public static Image logo { get; set; }

但我不知道如何将我的图像分配给它。这就是我现在所拥有的:

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

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

4

2 回答 2

4

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

首先,您必须确保 Visual Studio 项目中的文件实际上嵌入到程序集本身中。右键单击该文件并选择Properties,然后确保Build ActionEmbedded Resource

现在,您可以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);

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

于 2013-10-29T19:43:59.150 回答
0

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

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

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

于 2013-10-29T20:10:15.617 回答