2012-07-24 58 views
0

背景:我正在以高於60Hz的速度顯示高速數碼相機的實時圖像。實時圖像是通過更新Image控件的ImageSource的顯示:檢測圖像控件是否已完成更新其圖像

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

問題:我希望通過如果以前的圖像沒有被顯示在屏幕上還沒有跳過任何新的圖像,以提高應用程序的性能。例如,當Image控件(MyImage)尚未完成最後一張圖片的更新時,上面的調度程序調用將被跳過,直到MyImage再次變爲「空閒」。

我在MFC中使用GetUpdateRect()來做類似的事情來檢查是否還有一個區域需要更新,如果有的話,新圖像的顯示會被跳過。

問題:如何在WPF中實現相同的目標?如果圖像控制尚未完成最後一張圖像的更新,則跳過新圖像。

感謝advace。

+0

設置「MyImage.Source」時是否已經下載圖像,還是仍在下載?您可以檢查[IsDownloading](http://msdn.microsoft.com/en-us/library/system.windows.media.imaging.bitmapimage.isdownloading)屬性。你多久更新一次圖片? – Clemens 2012-07-24 07:26:45

+0

我假設在創建圖像時IsDownloading爲TRUE(如果我錯了,請糾正我)?如果是這種情況,那麼不,圖像在傳遞給MyImage.Source時已經被創建。 – seekingalpha 2012-07-24 19:13:39

回答

0

經過一番研究和測試,我意識到這可以通過調度員啓動Backgroundworker來實現。基本上,在工作人員的DoWork中處理「MyImage.Source = myNewBitMapImage」,只要工作人員忙,下一個圖像將被跳過。希望這可以幫助。