首先,我想向社区问好。我一直是这个地方的潜伏者和欣赏者。
现在,我正在开发一个包含 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 是一个位图。
在做了一些研究之后,我发现有一个可用的 onrender 函数,但由于效率的原因,似乎没有人关心它。我还考虑了分配建立图像并将位图分配为源的可能性,但这对我来说行不通。任何意见,将不胜感激。另外,如果需要更多信息/代码,请告诉我。谢谢!
丹尼尔