1

我有一个 WPF 应用程序,我需要在其中添加一个功能,该功能将非常快速地显示一系列全屏位图。在大多数情况下,它将只有两个图像,本质上是切换两个图像。它们显示的速率应该是恒定的,每张图像大约 10-20 毫秒。我尝试使用计时器直接在 WPF 中执行此操作,但显示速率似乎有所不同。我也尝试使用 SharpGL(OpenGL 上的 .Net 包装器),但使用大图像时速度非常慢(我可能没有做最好的方法)。我将在编译时间之前预先准备好所有位图,因此只要不更改像素,就可以更改格式。

最好的方法是什么?

我已经落后于计划,所以我没有时间学习大量 API 或尝试大量选项。

4

1 回答 1

1

“我尝试使用计时器直接在 WPF 中执行此操作,但显示速率似乎略有不同。”

不要使用定时器,而是使用 Thread.Sleep(20),因为它不会占用尽可能多的系统资源。这应该会给你一个立竿见影的改善。

听起来好像在图像快速切换时会有用户与应用程序交互,在这种情况下,将切换图像的代码放在后台线程中。请记住,UI- 不是线程安全的。

这些只是速战速决,但您可能需要使用 DirectX 进行硬件加速来绕过 HAL:

Windows 的硬件抽象层 (HAL) 在 Hal.dll 中实现。HAL 实现了许多功能,这些功能由不同的硬件平台以不同的方式实现,在这种情况下,主要是指芯片组。然后操作系统中的其他组件可以在所有平台上以相同的方式调用这些函数,而不考虑实际的实现。

于 2012-04-04T01:08:06.250 回答