0

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

 this.Dispatcher.Invoke(DispatcherPriority.Normal,(ThreadStart)delegate() { MyImage.Source = myNewBitMapImage; });

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

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

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

预先感谢。

4

1 回答 1

0

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

于 2012-07-27T00:47:36.890 回答