我有一个使用Emgu (OpenCV的。net包装器)编写的视频播放器,我正在捕获帧并对某些帧执行一些操作。在功能方面,我允许用户拍摄流媒体视频的快照,并以不同的形式突出显示快照的部分。
但是,由于视频播放器在子窗体上播放,因此当用户在窗体上绘图时,子窗体上的图像也会更新。这是不可取的。我很确定这与我的锁和锁的东西有关,我是一个新手。
你知道我哪里错了吗?我本以为锁(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 { };
}
}
啊哈!我真傻,这确实是个疏忽。修复了为新位图分配新内存的问题
using (Bitmap bmpFrame = new Bitmap(_video.CurrentFrame.Bitmap)
{
lock (bmpFrame)
{
TagForm f = new TagForm(bmpFrame);
f.Show();
}
}