.Net的PictureBox如何实现循环赋值并同步刷新显示?
现在的任务是逐帧处理 一个YUV视频文件,处理完第一帧时会弹出一个全屏窗口显示输出图片,此后全屏窗口不会消失,程序继续运行后面的帧,每处理完一帧窗口刷新一次显示最新的结果。我现在程序的大概思路是:
for (i=0; i<num_of _frames; i++){
step1: load第 i 帧图片
step2:处理第 i 帧图片
step3: 将第 i 帧图片的处理结果转为BitMap对象
step4: 将该BitMap用PictureBox显示出来,具体代码如下
this->FormBorderStyle = System::Windows::Forms::FormBorderStyle::None;
this->WindowState = FormWindowState::Maximized;
System::Drawing::Rectangle ret = Screen::GetWorkingArea(this);
str.assign(&outputname[0], &outputname[strlen(outputname)]);
String^ path = gcnew String(str.c_str());
this->pictureBox2->Image = image1;
this->pictureBox2->ClientSize = System::Drawing::Size(ret.Width, ret.Height);
this->pictureBox2->Dock = System::Windows::Forms::DockStyle::Fill;
this->pictureBox2->BringToFront();
}
每一帧图像处理完后,都对image1这个bitmap对象重新赋值。
但是我运行的时候只能显示最后一帧的处理结果,全屏窗口虽然一开始就出来了,但一直处于一种卡住一样的状态,这是不是因为winform的窗口刷新本身就很慢,跟不上图像处理算法的速度呢?如果是这个原因,那我在循环最后部分加一个定时器,让图片显示几秒后才进入下一个循环可以吗?还是有更好的解决方法?
不知道我的问题表述清楚了没有,在此先谢谢各位老师指教。