我想以这种方式访问我的资源:
string iconVar = "20";
imgIcon.Image = "Properties.Resources." + iconVar;
这是不可能的,因为我给的是字符串而不是图像。
所以问题是,如何在不给代码中的资源名称的情况下访问资源?
我通常知道你应该使用
imgIcon.Image = Properties.Resources.image1;
问题是,我还不知道是否会使用image1或image2。
我试过了:
imgIcon.ImageLocation = "pack://application:,,,/project1;component/Properties.Resources._" + iconVar;
imgIcon.Refresh();
但这似乎不起作用。
答案 0 :(得分:0)
我会做一些假设:
WinForms
imgIcon
控件是PictureBox
如果这一切都是真的,那么你应该能够直接分配它。
imgIcon.Image = Properties.Resources.YourImageName
我不确定你的意思是“没有给出资源的名称”。如果要指定图像,则必须提供其名称。
答案 1 :(得分:0)
如果我们谈论的是wpf,我认为你需要这样的东西:
BitmapImage bi = new BitmapImage();
bi.BeginInit();
bi.UriSource = new Uri("pack://application:,,,/YourApplicationName;component/Properties.Resources."+iconVar, UriKind.RelativeOrAbsolute);
bi.EndInit();
imgIcon.Image.Source = bi;
确保将 YourApplicationName 替换为您的实际应用程序名称(程序集/ exe的名称)
答案 2 :(得分:0)
你说你还不知道你会用什么图像,为什么会这样?您是否有理由根据字符串确定所需的图像?
如果您打算根据特定条件设置图片,可以尝试使用此字符而不是使用字符串:
Image image1 = Properties.Resources.image1;
Image image2 = Properties.Resources.image2;
imgIcon.Image = someBool ? image1 : image2;
如果您尚未确定最终版本所需的图像,并且希望在代码中的所有位置轻松更改它,请将图像定义为全局变量并使用该变量。
修改强>
要根据所述图片的名称加载图片,您可以尝试以下操作(不是自己测试,而是从this回答):
imgIcon.Image = (Image)Resources.ResourceManager.GetObject("20");
答案 3 :(得分:0)
我修好了。 这是我使用的代码:
Assembly _assembly;
Stream _imageStream;
_assembly = Assembly.GetExecutingAssembly();
_imageStream = _assembly.GetManifestResourceStream("project.Resources._" + iconVar + ".png");
imgIcon.Image = new Bitmap(_imageStream);
感谢您的回复!