我有一个使用Emgu(OpenCV的.net包装器)编写的视频播放器,我捕获帧并在certan帧上执行一些操作。在功能方面,我让用户拍摄流式视频的快照,并以不同的形式突出显示快照的各个部分。
但是,由于视频播放器正在儿童表单上的图像下面播放,因此当用户在表单上绘制时也会更新。这是不可取的。我很确定这与锁定和解锁的东西有关,我是这个东西的新手。
我出错的任何想法?我原以为 lock(bmpFrame)会阻止任何更新,但它不会:
private void btnTag_Click(object sender, EventArgs e)
{
if (_video != null && _video.CurrentFrame != null)
{
try
{
using (Bitmap bmpFrame = (Bitmap)_video.CurrentFrame.Bitmap)
{
lock (bmpFrame)
{
TagForm f = new TagForm(bmpFrame);
f.Show();
}
}
}
catch { };
}
}
答案 0 :(得分:0)
唉唉!愚蠢的我,这确实是一种疏忽。通过为新位图分配新内存来修复
using (Bitmap bmpFrame = new Bitmap(_video.CurrentFrame.Bitmap)
{
lock (bmpFrame)
{
TagForm f = new TagForm(bmpFrame);
f.Show();
}
}