4

私は、いくつかの情報 (単語または画像) を含むスライド ショーを表示する .NET アプリケーションを作成する任務を負っています。ユーザーが特定の項目を見たときに、すぐにスペースを押し、キーを押した時間を記録する必要があります。約50msの間、項目が次々と表示されます。次に、キーを押したときのタイムスタンプと、スライドショーが開始されたときのタイムスタンプの違いを評価する必要があります (したがって、ユーザーが提示されたアイテムに反応するのにかかった時間を知ることができます)。 編集:特別なアイテムの発生時刻も記録する必要があります。

アプリケーションの実行中に発生する可能性のある予測できないラグを減らして、入力処理が可能な限り現実的なものになるようにし、スライド間のラグを減らす必要があります。現在、私は3つのアプローチを考えています:

  • 標準の Windows フォーム (GDI+) アプリケーションを作成します。
  • WPF アプリケーションを作成する
  • Tom Miller の Render ループの概念を利用する DirectX 対応の Windows フォーム アプリケーションを作成します(パフォーマンスの点で効果的であると称賛されています)。

  • あなたが提案するかもしれない他の何か

高度な表示技術、特殊効果、または目的の 3D 環境用に設計されたものは使用しないことを明確にする必要があります。さまざまなフォントや色、または画像のプレーン テキスト スライドのみです。残念ながら情報源を引用することはできませんが、Windows フォームと GDI+ では期待どおりの精度が得られないことを読みました。では、WPF はより良い解決策を提供してくれるのでしょうか? レンダー ループまたはその他のアプローチを使用する必要がありますか。私は、デスクトップ アプリケーションのこの種のパフォーマンス要件について経験がありません。すべてのアドバイスをいただければ幸いです。


4

2 に答える 2

4

私は個人的に WPF が大好きですが、このアプリケーションで使用するのは非常に慎重です。GDI+ や DirectX と同じ時間精度はありません。DispatchTimer のように、さまざまな作業を行う必要がありますが、このようなもののために構築されたものではありません。WPF は、グラフィックスの上にある巨大な抽象化のセット全体であり、金属から離れれば離れるほど、潜在的な問題が発生します。コンボボックス内の 3D 球体の上に投影されたビデオを配置する場合は、WPF が適していますが、話しているスケールでの精度/精度が必要な場合、WPF は答えではありません。WPFがより良い精度を提供することをどこで読んだかわかりませんが、そうではないことを実質的に保証できます。

DirectX は、画像が一度に 50 ミリ秒だけ表示されることを保証する上で最も正確である可能性が最も高いでしょう。しかし、プログラミングの観点からテキストを扱いやすくするため、GDI+ はまともな代替ソリューションになるでしょう。

もう 1 つの考慮事項として、画面のリフレッシュ レートがあります。うわぁ。計算すると、ほとんどの LCD の応答速度は 5 ミリ秒で、これは割り当てられた時間の 10% です。それと、それらは 60Hz でしか表示されません。1 秒あたり 20 枚の画像 (1 画像あたり 50 ミリ秒) を表示している場合、3 回のリフレッシュ サイクルの間だけ画面に表示されます。

これが役立つことを願っています。

于 2012-12-05T17:33:43.467 に答える
0

50 ミリ秒は長くありません。スライドショーをビデオとしてエンコードして再生できますか?

于 2012-12-05T17:20:55.200 に答える