我想以编程方式从资源中获取特定值。例如,我有一个FileName
变量,其中包含资源图像名称。
如何使用此变量获取该资源?
我尝试了这个但没有工作:(第3行后文件为空)
public Bitmap FindImgaeFromResource(string ImageFileName)
{
Assembly thisExe;
thisExe = Assembly.GetExecutingAssembly();
Stream file = thisExe.GetManifestResourceStream(ImageFileName);
return (Bitmap)Image.FromStream(file);
}
这不是WPF应用程序,我不能使用this.tryfindresource()
。
答案 0 :(得分:3)
我的猜测是您使用的名称不正确。如果使用ILDASM打开程序集,则可以找到资源的正确名称。
这是一篇关于从程序集资源加载图像的知识库文章。
答案 1 :(得分:2)
Use ResourceManager
我们应该像这样创建新对象:
ResourceManager rManger = new ResourceManager("ProjectName.Properties.Resources", typeof(Resources).Assembly);
然后使用此代码来检索对象或字符串:
(System.Drawing.Bitmap)rManger.GetObject("Resource-Name");
或
rManger.GetString("Resource-Name");
答案 2 :(得分:1)
尝试修改这组语句。
string fileName ="AppNameSpace.FolderWithImage.logo.png";
Assembly assembly = Assembly.LoadFrom(Application.ExecutablePath);
Stream stream = assembly.GetManifestResourceStream();
Image bitmap = Image.FromStream(stream);
您也可以尝试直接引用该资源。这并不能完全帮助您解决问题中的情况,但是当您可以使用它时,它不容易出错。
byte[] imgBytes = Properties.Resources.MyImageFile;