问题与Picturebox并尝试更新图像

问题描述 投票:0回答:1

我正在尝试更新计时器上图片框中的图像。老实说,我对图片框的使用经验不多,距我完成任何C#工作大约已有5年了。我试图在google和此处进行搜索,但似乎找不到我认为是我需要的答案:/

本质上,这就是我想要做的。表单花费的时间以秒为单位(例如5秒),当单击一个按钮时,将打开一个新表单。此新表单上有一个图片框,它将显示目录中的随机照片。我能够得到显示随机照片的图片框,但是当我尝试刷新它而不重新打开表单时,这就是我遇到的问题。

我有一个变量(timeVar)设置为以秒为单位的输入时间,并且在后台有一个计时器,每当计时器计时时,它将通过减去1来更新timerVar。这就是我必须在图片框中设置图片的条件对于每次迭代。有一个外部循环遍历我的列表(dirList),直到命中了列表中的每个项目。

    while(timerVar > 0)
{
     pictureTimer.Start();
     imagePathPic = imagePath + dirList[ind];
     sessionPicture.ImageLocation = @imagePathPic;
     sessionPicture.Refresh();
}
    pictureTimer.Stop();
    timeVar = 5;

dirList是给定目录内所有图像的列表,而imagePath是保存目录的字符串。我的列表/字符串的功能以及外部循环都经过了成功的测试,但是当我在上面的循环中应用picturebox时,它直到完成最后一张图片的显示才执行任何操作。我想让它在表单上显示每张图片我想念什么?如果您需要更多信息,请告诉我。

谢谢!

c# visual-studio-2019 picturebox
1个回答
0
投票

对我来说,它可以从文件中加载图像。 Image.FromFile()System.Drawing命名空间下。我不必添加任何Refresh()方法。您可以尝试在用户表格this.Refresh()上调用“刷新”,也可以只是简单地调用Refresh()

public partial class Form1 : Form
{
    Timer _timer = new Timer();
    string[] _images;
    Random _random = new Random();
    string _imagesFolder = @"C:\Users\Me\Desktop\Picures\";
    public Form1()
    {
        InitializeComponent();
    }

    private void Form1_Load(object sender, EventArgs e)
    {
        _timer.Tick += new EventHandler(timer_Tick);
        _timer.Interval = 2000;
        _images = Directory.GetFiles(_imagesFolder);
    }
    private void button1_Click(object sender, EventArgs e)
    {
        _timer.Enabled = !_timer.Enabled;
    }

    private void timer_Tick(object sender, EventArgs e)
    {
        var index = _random.Next(0, _images.Length);
        var imagePath = Path.Combine(_imagesFolder, _images[index]);
        pictureBox1.Image = Image.FromFile(imagePath);
    }
}

这里是样机:

mockup

© www.soinside.com 2019 - 2024. All rights reserved.