我想在图片框中随机显示资源中的图像

本文关键字:随机 显示 图像 资源 | 更新日期: 2023-09-27 17:52:45

使用一个包含6个图像名称的列表和一个包含6个图片框的列表,我想随机显示图片框中资源中的图像。

这个代码不能工作。只是空的图片框....为什么?

List<PictureBox> box = new List<PictureBox>();
box.Add(pictureBox1);
box.Add(pictureBox2);
box.Add(pictureBox3);
box.Add(pictureBox4);
box.Add(pictureBox5);
box.Add(pictureBox6);
List<string> name = new List<string>();
name.Add("_1.jpg");
name.Add("_2.jpg");
name.Add("_3.jpg");
name.Add("_4.jpg");
name.Add("_5.jpg");
name.Add("_6.jpg");
Random r = new Random();
for (int i = 0; i < box.Count; i++)
{
  int rand = r.Next(0, 6);
  String imgname = name[rand];                
  object Ob= Properties.Resources.ResourceManager.GetObject(imgname);
  box[i].Image = Ob as Image;
}

我想在图片框中随机显示资源中的图像

我修改你的代码:

List<PictureBox> box = new List<PictureBox>();
box.AddRange(new PictureBox[]
{
    pictureBox1,
    pictureBox2,
    pictureBox3,
    pictureBox4,
    pictureBox5,
    pictureBox6,
});
List<string> name = new List<string>()
{
    "_1.jpg",
    "_2.jpg",
    "_3.jpg",
    "_4.jpg",
    "_5.jpg",
    "_6.jpg"
};
Random r = new Random();
for (int i = 0; i < this.Count; i++)
{
    var rm = new System.Resources.ResourceManager(((System.Reflection.Assembly)System.Reflection.Assembly.GetExecutingAssembly()).GetName().Name + ".Properties.Resources", ((System.Reflection.Assembly)System.Reflection.Assembly.GetExecutingAssembly()));
    this[i].Image = (Bitmap)rm.GetObject(name[r.Next(0, 6)]);
}

您的资源通常不包括文件扩展名,所以请尝试使用图像的名称。

name.Add("_1");
name.Add("_2");

就我个人而言,我不会在文件名中包含下划线-可能会使事情复杂化。