4

我的任务是编写一个 .NET 应用程序,该应用程序显示带有一些信息(文字或图像)的幻灯片,当用户看到某些项目时,她/他必须立即按空格键并且必须记录按键时间。这些项目将一个接一个地显示,大约 50 毫秒。然后我需要评估按键的时间戳和幻灯片开始时的时间戳之间的差异(这样我就会知道用户对呈现的项目做出反应需要多长时间)。 编辑:我还必须记录特殊项目的发生时间。

我需要减少应用程序运行时可能发生的任何不可预测的延迟,以便输入处理尽可能真实,并减少幻灯片之间的任何延迟。目前我正在考虑3种方法:

  • 编写一个标准的 Windows 窗体 (GDI+) 应用程序。
  • 编写 WPF 应用程序
  • 编写一个支持 DirectX 的 Windows 窗体应用程序,该应用程序利用Tom Miller 的 Render 循环概念(它在性能方面被称赞为有效)。

  • 您可能会建议的其他内容

我必须澄清一下,我不会使用高级显示技术、特殊效果或为目的而设计的 3D 环境——只是使用不同字体和颜色的纯文本幻灯片或图像。不幸的是,我无法引用我的资料来源,但我读到 Windows 窗体和 GDI+ 无法为我提供所需的准确性。那么,WPF 会不会为我提供更好的解决方案呢?我需要使用渲染循环还是其他方法。我对桌面应用程序的此类性能要求没有经验,所有建议将不胜感激。


4

2 回答 2

4

我个人喜欢 WPF,但我会非常谨慎地将它用于此应用程序。它不会具有与 GDI+ 或 DirectX 相同的时间精度。您必须使用各种各样的东西,比如 DispatchTimer,而它并不是为这样的东西而构建的。WPF 是图形之上的一整套巨大的抽象,你离金属越远,你就会引入潜在的问题。如果您想将投影在 3D 球体顶部的视频放在组合框内,那么 WPF 是可行的方法,但如果您需要在您所说的比例上准确/精确,WPF 不是答案。我不知道你在哪里读到 WPF 会为你提供更好的准确性,我几乎可以保证它不会。

DirectX 很可能是确保图片一次仅显示 50 毫秒的最准确方法。但是 GDI+ 将是一个不错的替代解决方案,因为从编程的角度来看,它可以更轻松地处理文本。

另一个考虑因素是屏幕刷新率。哎呀。如果您进行数学计算,大多数 LCD 的响应速度为 5 毫秒,这是您分配时间的 10%。那和它们仅以 60Hz 显示。如果您每秒显示 20 张图片(每张图片 50 毫秒),它只会在屏幕上显示 3 个刷新周期。

我希望这有帮助。

于 2012-12-05T17:33:43.467 回答
0

50 毫秒并不长。也许将幻灯片编码并播放为视频?

于 2012-12-05T17:20:55.200 回答