0

背景:高速デジタル カメラのライブ画像を 60Hz 以上で表示しています。ライブ画像は、Image コントロールの ImageSource を更新することで表示されます:

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

問題:以前の画像がまだ画面に表示されていない場合、新しい画像をスキップしてアプリのパフォーマンスを改善したいと考えていました。たとえば、イメージ コントロール (MyImage) が最後のイメージの更新をまだ完了していない場合、上記のディスパッチャ呼び出しは、MyImage が再び「アイドル」になるまでスキップされます。

GetUpdateRect() を使用して更新する領域がまだ残っているかどうかを確認することで、MFC で同様のことを行いました。ある場合は、新しい画像の表示がスキップされます。

質問: WPF で同じ目標を達成するにはどうすればよいですか? イメージ コントロールが最後のイメージの更新をまだ完了していない場合、新しいイメージはスキップされます。

よろしくお願いします。

4

1 に答える 1

0

調査とテストを行った結果、これはディスパッチャーを介してバックグラウンドワーカーを開始することで実現できることに気付きました。基本的に「MyImage.Source=myNewBitMapImage」はワーカのDoWorkで処理され、ワー​​カがビジー状態である限り次の画像は飛ばされます。お役に立てれば。

于 2012-07-27T00:47:36.890 に答える