C# 在图片框中显示一组图像?

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/11868757/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-09 19:35:01  来源:igfitidea点击:

Displaying an array of images in picturebox?

c#arraysimagepicturebox

提问by

I'm very new to visual C# I want to display an array of images in a picture box

我对视觉 C# 很陌生我想在图片框中显示一组图像

Here's my code:

这是我的代码:

string[] list = Directory.GetFiles(@"C:\pictures", "*.jpg");
Image[] images = new Image[5];
for (int index = 0; index < 5; index++)

{
    //HERE IS WHERE IM STUCKED WITH
    picturebox[index] = Image.FromFile(list[index]);
}

采纳答案by Sami

Edit-1 : This answer has a scope limited to Win-Forms C#. You need certain assemblies added in your application before using this code.

编辑 1:此答案的范围仅限于 Win-Forms C#。在使用此代码之前,您需要在应用程序中添加某些程序集。

using System.IO;
using System.Windows.Forms;

Edit ended;

编辑结束;

Original Answer

原答案

You have to draw all image to one image for displaying them in single picturebox

您必须将所有图像绘制到一个图像中才能在单个图片框中显示它们

That is bit complex you can use mutiple pictureboxes

这有点复杂,您可以使用多个图片框

In following code they are created dynamically according to need:

在以下代码中,它们是根据需要动态创建的:

    // For confirm visibility of all images set 
    this.AutoScroll = true;

    string[] list = Directory.GetFiles(@"C:\pictures", "*.jpg");
    PictureBox[] picturebox= new PictureBox[list.Length];
    int y = 0;
    for (int index = 0; index < picturebox.Length; index++)
    {
        this.Controls.Add(picturebox[index]);
        // Following three lines set the images(picture boxes) locations
        if(index % 3 == 0)
            y = y + 150; // 3 images per rows, first image will be at (20,150)
        picturebox[index].Location=new Point(index * 120 + 20, y);

        picturebox[index ].Size = new Size(100,120);
        picturebox[index].Image = Image.FromFile(list[index]);
    }

回答by perilbrain

Use picturebox[index].Image = Image.FromFile(list[index]);

picturebox[index].Image = Image.FromFile(list[index]);

回答by theD0c

The answer provided throws an object reference exception. Otherwise thanks for the example!

提供的答案会引发对象引用异常。否则感谢您的示例!

for (int index = 0; index < picturebox.Length; index++)
{
     this.Controls.Add(picturebox[index]);
     // Following three lines set the images(picture boxes) locations

should be

应该

for (int index = 0; index < picturebox.Length; index++)
{
    picturebox[index] = new PictureBox();
    this.Controls.Add(picturebox[index]);
    // Following three lines set the images(picture boxes) locations

回答by ali

//this code help you to work with picturebox in arraye

//此代码可帮助您使用数组中的图片框

public partial class Form_Begin : Form
    {
        PictureBox[] pictureBoxs = new PictureBox[50];
        public Form_Begin()
        {
            InitializeComponent();
            pictureBoxs[0] = pictureBox1;
            pictureBoxs[1] = pictureBox2;
            pictureBoxs[2] = pictureBox3;
            pictureBoxs[3] = pictureBox4;}



            List<PictureBox> pictureBoxes = new List<PictureBox>();
 private void buttonX1_Click(object sender, EventArgs e)
            {
                for (int i = 0; i <2; i++)
                {
                    pictureBoxs[i].Image =your_name_project.Properties.Resources.Image_1;                     // Load Image_1 from Resources on property of picturebox  
                }
                for (int i = 2; i < 4; i++)
                {
                    pictureBoxs[i].Image =your_name_project.Properties.Resources.Image_2;                    // Load Image_12 from Resources on property of picturebox 

                }

回答by Usman Zia

 private void picbutton_Click(object sender, EventArgs e)
    {
        OpenFileDialog open = new OpenFileDialog();
        PictureBox[] picture = new PictureBox[5];
        int x = 0;
        int y = 15;
        for (int index = length; index < picture.Length; index++)
        {
                picture[index] = new PictureBox();
                picture[index].Size = new Size(100, 50);
                open.Title = "OPen Image";
                open.Filter = "JPG Files (*.jpg)|*.jpg|JPEG Files (*.jpeg)|*.jpeg|PNG Files (*.png)|*.png|GIF Files (*.gif)|*.gif";
                DialogResult result = open.ShowDialog();
                if (result == DialogResult.OK)
                {
                    picture[index].BackgroundImage = new Bitmap(open.FileName);
                    picture[index].SizeMode = PictureBoxSizeMode.AutoSize;
                    listBox1.Controls.Add(picture[index]);
                    if ((x % 3 == 0) && (index != 0))
                    {
                        y = y + 150; // 3 images per rows, first image will be at (20,150)
                        x = 0;
                    }
                    picture[index].Location = new Point(x * 210 + 20, y);
                    picture[index].Size = new Size(200, 150);
                    x++;
            }
        }
    }