1

一連の全画面ビットマップを非常に高速に表示する機能を追加する必要がある WPF アプリケーションがあります。ほとんどの場合、それは 2 つの画像だけであり、基本的に 2 つの画像を切り替えます。それらが表示される速度は一定で、画像ごとに約 10 ~ 20 ミリ秒である必要があります。タイマーを使用してWPFで直接これを実行しようとしましたが、表示レートが少し変化するように見えました。また、SharpGL (OpenGL の .Net ラッパー) を使用してみましたが、大きな画像を使用すると非常に遅くなりました (最善の方法を行っていない可能性があります)。コンパイル時間の前に、すべてのビットマップを前もって用意するので、ピクセルが変更されない限り、フォーマットを変更できます。

これを行う最良の方法は何ですか?

すでに予定より遅れているため、多くの API を学習したり、多くのオプションを試したりする時間がありません。

4

1 に答える 1

1

「タイマーを使用して WPF でこれを直接実行しようとしましたが、表示レートが少し変化するように見えました。」

タイマーを使用する代わりに、Thread.Sleep(20) を使用してください。多くのシステム リソースを占有することはありません。これにより、すぐに改善が得られるはずです。

また、画像が急速に切り替わっている間にアプリケーションとのユーザー インタラクションがあるようにも聞こえます。この場合は、画像を切り替えるコードをバックグラウンド スレッドに配置します。ただし、UI はスレッドセーフではないことに注意してください。

これらは手っ取り早い方法ですが、HAL を回避するには、ハードウェア アクセラレーションに DirectX を使用する必要がある場合があります。

Windows のハードウェア アブストラクション レイヤー (HAL) は、Hal.dll に実装されています。HAL は、さまざまなハードウェア プラットフォームによってさまざまな方法で実装される多数の機能を実装します。このコンテキストでは、主にチップセットを指します。オペレーティング システムの他のコンポーネントは、実際の実装に関係なく、すべてのプラットフォームで同じ方法でこれらの関数を呼び出すことができます。

于 2012-04-04T01:08:06.250 に答える