【问题标题】:Display image in picturebox one after another在picturebox中一张张显示图片
【发布时间】:2014-12-18 04:41:06
【问题描述】:

我正在尝试制作一个简单的应用程序,它可以从文件夹中获取所有 *.jpg 文件,并将它们显示在 PictureBox 中。

但是我正在尝试制作 Prev/Next 按钮来一张一张地显示图像。到目前为止,这是我的“下一步”按钮的代码:

string path = @"..\..\Resources\Wallpapers\";
int count = 0;

private void Form1_Load(object sender, EventArgs e)
{
    DisplayNextFile(count);
}

private void next_Click(object sender, EventArgs e)
{
    DisplayNextFile(count);
}

private void DisplayNextFile(int c)
{
    var rand = new Random();
    var files = Directory.GetFiles(path, "*.jpg");
    var images = new Image[files.Length];

    for (int i = c; i < files.Length; ++i)
    {
        images[i] = Image.FromFile(files[i]);
        picBoxMainPreview.Image = images[i];
        break;
    }

    count++;

    if (count == files.Length)
        count = 0;
}

它工作正常,但我怎样才能为上一个按钮做到这一点?

【问题讨论】:

  • 查看我的评论以获得稳定的解决方案!

标签: c# image picturebox


【解决方案1】:

DisplayNextFile 中删除count++;

private void next_Click(object sender, EventArgs e)
{
    count = (++count) % files.Length;
    DisplayNextFile(count);
}


private void previous_Click(object sender, EventArgs e)
{  
    count = (count - 1) >= 0 ? count - 1 ? files.Length - 1;

    DisplayNextFile(count);
}

将 for 循环替换为:

picBoxMainPreview.Image = Image.FromFile(c);

【讨论】:

  • 这样图像不会被丢弃,一段时间后会导致OOM异常。请改用picBoxMainPreview.ImageLocation = c; 或像这样处理图像:if (picBoxMainPreview.Image != null) picBoxMainPreview.Image.Dispose(); 在设置之前!
猜你喜欢
  • 2021-12-14
  • 1970-01-01
  • 2013-06-11
  • 2022-10-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多