私は48のフレーム/画像を持っています。再生(button14)をクリックすると、画像が自動的に移動します。
しかし、トラックバーバーがタイマーと一緒に移動することも望んでいます。しかし、TrackBar1.Value = _indx; を作成すると、timer3 tick イベントでは、何度も何度も再生を行っているときに、48 フレームの場合は trackBar の値が変化するため、trackBar には 15 ティックしかなく、右側の端に到達すると停止します。
私が欲しいのは、再生をクリックすると、一時停止をクリックしてから停止するまで続行して、画像を何度も実行することです。
実際には、timer3 tick イベントで _indx++; も実行するため、trackBar の値が変更されます。また、trackBar に 15 フレームあると、続行する代わりに最後に停止します。
private void btnPlay_Click(object sender, EventArgs e)
{
_indx = 0;
DirectoryInfo dir = new DirectoryInfo(sf);
if (_files == null)
_files = new List<FileInfo>();
FileInfo[] fi = dir.GetFiles("*.bmp");
_files.AddRange(fi);
_files = _files.OrderBy(f => f.LastWriteTime).ToList();
button14.ForeColor = Color.Red;
button13.ForeColor = Color.Black;
button12.ForeColor = Color.Black;
timer3.Start();
button13.Enabled = true;
button13.Text = "Pause";
button12.Enabled = true;
}
private void timer3_Tick(object sender, EventArgs e)
{
try
{
Image iOLd = this.pictureBox1.Image;
Image img = Image.FromFile(_files[_indx].FullName);
trackBar1.Value = _indx;
label23.Text = _files[_indx].Name;
this.pictureBox1.Image = img;
if (iOLd != null)
iOLd.Dispose();
_indx++;
if (_indx >= _files.Count)
_indx = 0;
timer3.Interval = 10;
timer3.Start();
}
catch
{
}
}
private void btnPause_Click(object sender, EventArgs e)
{
button13.ForeColor = Color.Red;
button14.ForeColor = Color.Black;
timer3.Stop();
if (button13.Text == "Continue")
{
timer3.Start();
button13.Text = "Pause";
return;
}
if (button13.Text == "Pause")
{
timer3.Stop();
button13.Text = "Continue";
}
}
private void btnStop_Click(object sender, EventArgs e)
{
trackBar1.Value = 0;
Image iOLd = this.pictureBox1.Image;
Image img = Image.FromFile(_files[0].FullName);
this.pictureBox1.Image = img;
if (iOLd != null)
iOLd.Dispose();
button13.Text = "Pause";
timer3.Stop();
_indx = 0;
label23.Text = _files[_indx].Name;
button12.ForeColor = Color.Red;
button14.ForeColor = Color.Black;
button13.Enabled = false;
}
Button14 は再生です button13 は Pause/Continue で、Button12 は Stop です 問題は、trackBar1.Value = _indx; を作成しない場合です。trackBar はまったく移動しません。そして、_indx++; を作成しない場合。その後、何も機能しません。
_files は List で、_indx は int です