我有这个清单:
List<string> list = new List<string>();
list.Add("dog.jpg");
list.Add("cat.jpg");
list.Add("horse.jpg");
在我的资源中,我有 3 个图像,名称分别为:狗、猫和马。我想使用列表将它们显示在图片框中。
我尝试过这样的事情:
pictureBox1.Image = project.Properties.Resources.list[2]; // should display the horse image
问题是它显示错误:
“资源”不包含“列表”的定义`
如何使用列表中的名称获取图像?
当您向资源文件 (.resx) 添加图像、字符串等时,Visual Studio 会自动在相应的资源文件中生成强类型属性Resources
为你上课。例如,如果您添加了horse.jpg
to Resources.resx
在你的项目中,应该有一个horse
财产在Properties.Resources
返回一个类System.Drawing.Bitmap
。所以你应该能够做到:
pictureBox1.Image = Properties.Resources.horse;
如果您希望能够通过名称访问图像资源,那么您可以按照生成代码的相同方式进行操作,使用ResourceManager.GetObject
。但请注意,图像资源名称不会包含.jpg
扩展,你必须将结果转换为Bitmap
:
pictureBox1.Image = (Bitmap)Properties.Resources.ResourceManager.GetObject("horse");
您可以创建一个辅助方法,它将从文件名中删除扩展名并检索资源,如下所示:
private Bitmap GetImageResource(string filename)
{
string resourceName = filename.Substring(0, filename.IndexOf("."));
return (Bitmap)Properties.Resources.ResourceManager.GetObject(resourceName);
}
这将允许您将它与您的列表一起使用,如下所示:
pictureBox1.Image = GetImageResource(list[2]);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)