我已将图像添加logo.bmp
到我的项目中,但我不知道如何将其分配给Image
类型。我从创建变量开始:
public static Image logo { get; set; }
但我不知道如何将我的图像分配给它。这就是我现在所拥有的:
logo = Image.FromFile("logo.bmp");
但这假设图像位于 .exe 的目录中。这样做的正确方法是什么?
您可以使用System.Reflection.Assembly.GetManifestResourceStream
从已加载的程序集中加载资源。
首先,您必须确保 Visual Studio 项目中的文件实际上嵌入到程序集本身中。右键单击该文件并选择Properties,然后确保Build Action是Embedded 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);
请记住,以这种方式加载时,您可能需要将流与图像分开处理。
Assembly 类是 System.Reflection 命名空间的一部分。使用 Assembly.GetExecutingAssembly() 的替代方法是
typeof(YourClassName).Assembly.GetManifestResourceStream("path.to.your.resource")
这样,您可以使用类型来确定您希望从哪个程序集中访问资源。