【问题标题】:Displaying an array of images in picturebox?在图片框中显示一组图像?
【发布时间】:2012-08-05 19:31:09
【问题描述】:

我是 Visual C# 的新手,我想在图片框中显示一组图像

这是我的代码:

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]);
}

【问题讨论】:

  • 什么是图片框!不应该是图片吗?

标签: c# arrays image picturebox


【解决方案1】:
 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++;
            }
        }
    }

【讨论】:

  • 尝试解释你的答案以获得适当的关注。 SO 不相信代码 sn-p 作为答案。
【解决方案2】:

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

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

编辑结束;

原答案

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

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

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

    // 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]);
    }

【讨论】:

  • 我收到错误提示 does not contain defination for AutoScroll , Directory, PictureBox, Controls, Points, Size, Image 请告诉我应该添加哪个指令。
  • 您应该使用 winf-forms 来使用此代码。请在顶部查看我的编辑
【解决方案3】:

//此代码帮助您使用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 

                }

【讨论】:

    【解决方案4】:

    提供的答案引发对象引用异常。否则谢谢你的例子!

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

    应该是

    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
    

    【讨论】:

      【解决方案5】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-12-13
        • 1970-01-01
        • 2014-06-01
        • 2014-12-17
        • 2022-11-16
        • 1970-01-01
        相关资源
        最近更新 更多