Здравствуйте, проигрывается стандартный плеер Aforge, задается обработчик создания нового кадра
this.videoSourcePlayer.VideoSource = null;
this.videoSourcePlayer.NewFrame += new AForge.Controls.VideoSourcePlayer.NewFrameHandler(this.videoSourcePlayer_NewFrame);
На форме стоит стандартный Progressbar.
private void buttonVideo_Click(object sender, EventArgs e)
{
//ourTimer.Enabled = true;
//ourTimer.Start();
//ourTimer.Interval = 1000 * checkedListBoxMedia.Items.Count * 12 * 3 / 25;
progressBar1.Value = 0;
progressBar1.Maximum = 100 * checkedListBoxMedia.Items.Count;
progressBar1.Step = 25;
//progressThread.Start();
//ourTimer.Tick += new System.EventHandler(timer_Tick);
OpenVideoSource(medialist);
}
Далее в обработчике такой код:
// New frame received by the player
private void videoSourcePlayer_NewFrame(object sender, ref Bitmap image)
{
frameNumber++;
//Added progress
BeginInvoke((MethodInvoker)
delegate
{
if ((progressBar1.Value != progressBar1.Maximum) && (frameNumber % progressBar1.Step == 0))
{
//progressBar1.Value += progressBar1.Step;
progressBar1.PerformStep();
}
});
//BeginInvoke((MethodInvoker)
// delegate
// {
// OnProgressChange();
// });
if (frameNumber == 100)
{
//Painting
Bitmap bitmap = image;
bitmap.Save(videoNumber.ToString() + frameNumber.ToString() + ".jpeg", ImageFormat.Jpeg);
VideoPictures.Add(videoNumber.ToString() + frameNumber.ToString() + ".jpeg", videoSourcePlayer.VideoSource.Source);
if (frameNumber == 100)
{
BeginInvoke((MethodInvoker)
//Invoke((MethodInvoker)!!!
delegate
{
CloseCurrentVideoSource();
});
}
}
DateTime now = DateTime.Now;
Graphics g = Graphics.FromImage(image);
////Painting
// paint current time
SolidBrush brush = new SolidBrush(Color.Red);
g.DrawString(now.ToString(), this.Font, brush, new PointF(5, 5));
brush.Dispose();
g.Dispose();
}
В секунду примерно предполагается обработка 25 кадров, т.е каждую секунду расчитываю на визуальное изменение значения Progressbar. Однако вместо этого происходит все не так - значение Progressbar изменяется не плавно, по шагам в единицу времени, а в конце обработки, сразу. Прошу помощи, спасибо
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости