0
第一次点击按钮时,它会快速显示pictureBox1
中的图像。但是在一些图像之后它变得非常缓慢。 它像慢动作模式一样慢慢地显示图像。为什么使用计时器播放pictureBox1中的图像时播放速度变得非常慢?
这是按钮点击事件代码:
private void button5_Click(object sender, EventArgs e)
{
_files = new List<FileInfo>();
myTrackPanelss1.trackBar1.Value = 0;
_indx = 0;
_files.AddRange(_fi);
_files = _files.OrderBy(f => f.LastWriteTime).ToList();
button5.ForeColor = Color.Red;
button6.ForeColor = Color.Black;
button7.ForeColor = Color.Black;
timer3.Start();
button6.Enabled = true;
button6.Text = "Pause";
button7.Enabled = true;
}
变量_indx
是全球int
。
然后TIMER3记号事件:
private void timer3_Tick(object sender, EventArgs e)
{
try
{
myTrackPanelss1.trackBar1.Maximum = _files.Count;
myTrackPanelss1.trackBar1.Minimum = 0;
Image iOLd = this.pictureBox1.Image;
Image img = Image.FromFile(_files[_indx].FullName);
myTrackPanelss1.trackBar1.Value = _indx;
label22.Text = _files[_indx].Name;
this.pictureBox1.Image = img;
if (iOLd != null)
iOLd.Dispose();
_indx++;
if (_indx >= _files.Count)
{
_indx = 0;
}
timer3.Interval = 40;
}
catch
{
}
}
有时,当我按一下按钮,一旦定时器开始它的显示速度很慢的pictureBox1
图像。有时它会像间隔40一样快速地显示出来,然后在某个点上变慢。我无法弄清楚为什么它变得缓慢。
我建议去掉空'catch'块。可能不是当前问题的一部分,但是如果你在某个地方发现异常,那么因为你只是在吃东西而不知道它。 –
看着你的计时器间隔,你每40毫秒触发计时器的滴答事件。由于每秒发送一个太多的请求,因此您可能会变慢。在计时器的滴答事件中,您正在构建来自文件的图像对象,当您的图像驻留在磁盘上时,该对象可能会变慢。 – Hakunamatata
删除了try/catch我也将trackbar1的最大和最小行移动到按钮单击事件,并且timer3 interval = 40将它移动到按钮单击事件。但仍然遇到问题。 –