我有一个WPF应用程序,我需要添加一个功能,可以非常快速地显示一系列全屏位图。在大多数情况下,它只有两个图像,基本上是切换两个图像。它们显示的速率应该是恒定的,每张图像大约10-20ms。我尝试使用计时器直接在WPF中执行此操作,但显示速率似乎有所不同。我也尝试过使用SharpGL(OpenGL上的.Net包装器),但是在使用大图像时速度非常慢(我可能没有采用最佳方式)。在编译之前,我将预先获得所有位图,因此只要像素不被更改,格式就可以更改。
最好的方法是什么?
我已经落后于时间表,所以我没有时间学习很多API或尝试了很多选项。
答案 0 :(得分:1)
“我尝试使用计时器直接在WPF中执行此操作,但显示速率似乎有所不同。”
不使用Timer,而是使用Thread.Sleep(20),因为它不会占用尽可能多的系统资源。这应该会立即改善你。
当图像快速切换时,听起来好像会有用户与应用程序的交互,在这种情况下,将图像切换为后台线程中的图像。请记住,UI-不是线程安全的。
这些只是快速获胜,但您可能需要使用DirectX for Hardware Acceleration来绕过HAL:
Windows的硬件抽象层(HAL)实现于 HAL.DLL。 HAL实现了许多功能 由不同的硬件平台以不同的方式实现 在这种背景下,主要指芯片组。其他组件 然后,操作系统可以以相同的方式调用这些函数 平台,不考虑实际实施。