如何从文件夹中的图像动态创建多个PictureBox实例?

时间:2013-02-22 15:26:55

标签: c# winforms

我正在尝试从包含图像的文件夹中动态创建图片框,但在我的代码中我只能创建一个图片框。如何为每个图像创建一个图片框?

这是我的代码:

 namespace LoadImagesFromFolder
 {
   public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        string[] images = Directory.GetFiles(@"C:\Users\Public\Pictures\Sample Pictures", "*.jpg");
        foreach (string image in images)
        {
            pictureBox1.Image = new Bitmap(image); 

        }
    }
}
}

2 个答案:

答案 0 :(得分:2)

您只需重写单个PictureBox(pictureBox1)的图像值,但您需要为每张图片创建一个新的PictureBox并设置其值。那样做,你会没事的。

像这样的东西(只是一个例子,根据你的需要修改它!)

foreach (string image in images)
{
   PictureBox picture = new PictureBox();
   picture.Image = new Bitmap(image); 
   someParentControl.Controls.Add(picture);
}

答案 1 :(得分:1)

您必须使用对话框选择文件,在PictureBox循环中动态创建foreach控件,并将它们添加到表单(或其他容器控件)Controls集合中。

private void button1_Click(object sender, EventArgs e)
{
    OpenFileDialog d = new OpenFileDialog();

    // allow multiple selection
    d.Multiselect = true;

    // filter the desired file types
    d.Filter = "JPG |*.jpg|PNG|*.png|BMP|*.bmp";

    // show the dialog and check if the selection was made
    if (d.ShowDialog() == DialogResult.OK)
    {
        foreach (string image in d.FileNames)
        {
            // create a new control
            PictureBox pb = new PictureBox();

            // assign the image
            pb.Image = new Bitmap(image);

            // stretch the image
            pb.SizeMode = PictureBoxSizeMode.StretchImage;

            // set the size of the picture box
            pb.Height = pb.Image.Height/10;
            pb.Width = pb.Image.Width/10;

            // add the control to the container
            flowLayoutPanel1.Controls.Add(pb);
        }
    }
}