を使用して、WriteableBitmap
毎秒約 20 フレームで処理する画像を表示しています。
この質問 ( WPF: 急速に変化する画像を表示するより効率的な方法? )
とこの質問 (大きなメモリを割り当てずに迅速に更新する画像を表示する方法は? )
は、これを行う最善の方法はWriteableBitmap
.
のドキュメントは、UI スレッドWriteableBitmap
で呼び出すWritePixels()
と、レンダリング スレッドが画像を再描画すること を示しています。
MSDN ドキュメント:
UI スレッドはコンテンツをバック バッファーに書き込みます。レンダリング スレッドは、フロント バッファーからコンテンツを読み取り、それをビデオ メモリにコピーします。バック バッファーへの変更は、変更された四角形領域で追跡されます。
<中略/>
更新がレンダリング スレッドに送信されると、レンダリング スレッドは、変更された四角形をバック バッファーからフロント バッファーにコピーします。レンダリング システムは、この交換を制御して、デッドロックを回避し、「テアリング」などのアーティファクトを再描画します。
バックグラウンド スレッドで画像を処理してから、Dispatcher.BeginInvoke()
を呼び出して、が UI スレッドでWritePixels()
確実に呼び出されるようにします。WritePixels()
でティアリングがまだ発生していることWriteableBitmap
がわかりました。私が取り組んでいるアプリケーションでは、ひどく見えます(医療画像アプリケーション)。何か私にできることはありますか?