我正在尝试更新计时器上图片框中的图像。老实说,我对图片框的使用经验不多,距我完成任何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时,它直到完成最后一张图片的显示才执行任何操作。我想让它在表单上显示每张图片我想念什么?如果您需要更多信息,请告诉我。
谢谢!
对我来说,它可以从文件中加载图像。 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);
}
}
这里是样机: