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將它移動到按鈕單擊事件。但仍然遇到問題。 –