Прежде всего, я хочу сказать привет сообществу. Я долго скрывался и ценил это место.
А теперь я работаю над персональной программой обнаружения движения, которая включает в себя библиотеки Aforge и основана на учебнике Эндрю Кириллова, расположенном здесь: http://www.codeproject.com/KB/audio-video/Motion_Detection.aspx?fid=177045&fr=26#xx0xx. Который, кстати, я НАСТОЯТЕЛЬНО рекомендую всем это имеет интерес к теме. Теперь к делу. Этот проект построен с использованием Winforms, я воссоздаю свою собственную версию (кусочки, кусочки и дополнения) с использованием WPF, и я столкнулся с проблемой. Есть раздел, в котором Эндрю использует функцию 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, но, похоже, никто не заботится о ней из-за эффективности. Я также рассмотрел возможность назначения создания изображения и назначения растрового изображения в качестве источника, но это не сработало для меня. Любой совет будет принят во внимание. Также, если вам нужна дополнительная информация / код, пожалуйста, дайте мне знать. Спасибо!
Daniel