我目前正在开发一个 Windows.Forms 应用程序。这基本上是一个简单的运动检测问题。
我在表单上有一个按钮,按下该按钮会启动执行以下操作的后台工作人员:
- 从磁盘获取图像
- 创建一个新的位图,用作缓冲区。
- 执行运动检测
- 根据运动检测的结果,更新缓冲区(使用缓冲区的绘图表面)
- 使用包含缓冲区克隆的参数触发 Progress Changed 事件,基本上
(sender as BackgroundWorker).ReportProgress((Bitmap)buffer.Clone())
在 Progress Changed Event 中,然后我将缓冲区绘制到屏幕上。
if (!PnlImage.IsDisposed)
PnlImage.CreateGraphics().DrawImageUnscaled(buffer, 0, 0);
我不禁想知道这是否是在屏幕上绘制更新图像的最佳方式。谁能建议我可以做的任何改进?谢谢。
编辑:我已经更新了程序以使用 .NET Framework 4,我们不再使用 BackgroundWorker。相反,我们现在使用 System.Threading.Tasks 命名空间,并使用 Invoke 从任务中更新背景图像。
感谢所有回复。