检测图像控件是否已完成更新其图像

时间:2012-07-24 00:42:15

标签: wpf image dispatcher

背景:我正在以高于60Hz的高速数码相机显示实时图像。通过更新Image控件的ImageSource:

显示实时图像
 this.Dispatcher.Invoke(DispatcherPriority.Normal,(ThreadStart)delegate() { MyImage.Source = myNewBitMapImage; });

问题:如果先前的图片尚未在屏幕上显示,我想通过跳过任何新图片来提高应用的性能。例如,当Image control(MyImage)尚未完成更新最后一个图像时,将跳过上述调度程序调用,直到MyImage再次变为“空闲”。

我在MFC中做了类似的事情,使用GetUpdateRect()检查是否还有一个区域需要更新,如果有,则跳过显示新图像。

问题:如何在WPF中实现相同的目标?如果图像控件尚未完成更新最后一个图像,则跳过新图像。

先谢谢。

1 个答案:

答案 0 :(得分:0)

经过一些研究和测试,我意识到这可以通过调度员启动Backgroundworker来实现。基本上,“MyImage.Source = myNewBitMapImage”在worker的DoWork中处理,只要worker忙,下一个图像就会被跳过。希望这会有所帮助。