背景:我正在以高于60Hz的高速数码相机显示实时图像。通过更新Image控件的ImageSource:
显示实时图像 this.Dispatcher.Invoke(DispatcherPriority.Normal,(ThreadStart)delegate() { MyImage.Source = myNewBitMapImage; });
问题:如果先前的图片尚未在屏幕上显示,我想通过跳过任何新图片来提高应用的性能。例如,当Image control(MyImage)尚未完成更新最后一个图像时,将跳过上述调度程序调用,直到MyImage再次变为“空闲”。
我在MFC中做了类似的事情,使用GetUpdateRect()检查是否还有一个区域需要更新,如果有,则跳过显示新图像。
问题:如何在WPF中实现相同的目标?如果图像控件尚未完成更新最后一个图像,则跳过新图像。
先谢谢。
答案 0 :(得分:0)
经过一些研究和测试,我意识到这可以通过调度员启动Backgroundworker来实现。基本上,“MyImage.Source = myNewBitMapImage”在worker的DoWork中处理,只要worker忙,下一个图像就会被跳过。希望这会有所帮助。