按名称访问图像资源并将其分配给 PictureBox
Accessing an image resource by name and assigning it to a PictureBox
我有这个列表:
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
问题是它显示错误:
'Resources' does not contain a definition for 'list' `
如何使用列表中的名称获取图像?
尝试调用 pictureBox1.Refresh();分配图像后。
当您将图像、字符串等添加到资源文件 (.resx) 时,Visual Studio 会自动在相应的 Resources
class 中为您生成强类型属性。因此,例如,如果您在项目中将 horse.jpg
添加到 Resources.resx
,则 Properties.Resources
class 上应该有一个 horse
属性 returns一个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]);
Properties.Resources 只知道资源(狗、猫和马)所以你不能给他一个字符串并指望他知道资源。
您需要像这样使用 ResourceManager 中的 GetObject 方法:
(Bitmap)Properties.Resources.ResourceManager.GetObject(list[2])
这应该给你马图像。
我有这个列表:
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
问题是它显示错误:
'Resources' does not contain a definition for 'list' `
如何使用列表中的名称获取图像?
尝试调用 pictureBox1.Refresh();分配图像后。
当您将图像、字符串等添加到资源文件 (.resx) 时,Visual Studio 会自动在相应的 Resources
class 中为您生成强类型属性。因此,例如,如果您在项目中将 horse.jpg
添加到 Resources.resx
,则 Properties.Resources
class 上应该有一个 horse
属性 returns一个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]);
Properties.Resources 只知道资源(狗、猫和马)所以你不能给他一个字符串并指望他知道资源。 您需要像这样使用 ResourceManager 中的 GetObject 方法:
(Bitmap)Properties.Resources.ResourceManager.GetObject(list[2])
这应该给你马图像。