Picturebox 问题并尝试更新图像
Issue with Picturebox and trying to update images
我正在尝试更新计时器图片框中的图像。老实说,我在图片框方面没有太多经验,而且自从我完成任何 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 是包含目录的字符串。我的 list/string 的功能以及外部循环都已成功测试,但是当我在上面的循环中应用图片框时,它不会执行任何操作,直到它获得最后一张图片然后显示。我缺少什么才能在表单上显示每张图片?如果您需要更多信息,请告诉我。
谢谢!
对我来说,它可以从文件加载图像。 Image.FromFile()
在 System.Drawing
命名空间下。我不必添加任何 Refresh()
方法。您可以尝试在您的用户表单 this.Refresh()
上调用 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);
}
}
这是模型:
我正在尝试更新计时器图片框中的图像。老实说,我在图片框方面没有太多经验,而且自从我完成任何 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 是包含目录的字符串。我的 list/string 的功能以及外部循环都已成功测试,但是当我在上面的循环中应用图片框时,它不会执行任何操作,直到它获得最后一张图片然后显示。我缺少什么才能在表单上显示每张图片?如果您需要更多信息,请告诉我。
谢谢!
对我来说,它可以从文件加载图像。 Image.FromFile()
在 System.Drawing
命名空间下。我不必添加任何 Refresh()
方法。您可以尝试在您的用户表单 this.Refresh()
上调用 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);
}
}
这是模型: