首先,我想向社区问好。我一直是这个地方的长期潜伏者和欣赏者。在WPF中绘制视频的方法
现在,我正在研究一个包含Aforge库的个人运动检测程序,该程序强烈基于Andrew Kirillov的教程http://www.codeproject.com/KB/audio-video/Motion_Detection.aspx?fid=177045&fr=26#xx0xx。顺便说一下,我会强烈建议任何对此主题感兴趣的人。现在到了。这个项目是使用winforms构建的,我使用WPF重新创建了我自己的版本(比特,片断和附加),并且遇到了问题。有一个部分,Andrew使用了OnPaint函数,并且我正在努力如何处理wpf中的绘图。这里是他的代码(可能有小的改动)
// Paint control
protected override void OnPaint(PaintEventArgs pe)
{
// lock
Monitor.Enter(this);
var g = pe.Graphics;
var rc = ClientRectangle;
var pen = new Pen(m_RectColor, 1);
// draw rectangle
g.DrawRectangle(pen, rc.X, rc.Y, rc.Width - 1, rc.Height - 1);
if (m_Camera != null)
{
try
{
m_Camera.Lock();
// draw frame
g.DrawImage(m_Camera.LastFrame, rc.X + 1, rc.Y + 1, rc.Width - 2, rc.Height - 2);
}
catch (Exception) { }
finally
{
m_Camera.Unlock();
}
}
pen.Dispose();
// unlock
Monitor.Exit(this);
base.OnPaint(pe);
}
为了提供更多的见解,m_Camera.LastFrame是一个位图。
经过一番研究,我发现有一个可用的渲染函数,但似乎没有人关心它,很大程度上是因为效率。我还考虑过分配建立图像和分配位图作为源的可能性,但这对我来说并不适用。任何意见,将不胜感激。如果需要更多信息/代码,请告诉我。谢谢!
丹尼尔
感谢您的迅速和整个答复。我会继续努力,让每个人都知道最好的解决方案是什么。 – Daniel