我已将图片logo.bmp
添加到我的项目中,但我无法弄清楚如何将其分配到Image
类型。我首先创建了变量:
public static Image logo { get; set; }
但我无法弄清楚如何将图像分配给它。这就是我现在所拥有的:
logo = Image.FromFile("logo.bmp");
但是假设图像位于.exe目录中。这样做的正确方法是什么?
答案 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")
这样,您可以使用类型来确定要从哪个程序集访问资源。