快速显示位图

时间:2012-04-04 00:12:35

标签: c# wpf bitmap

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

最好的方法是什么?

我已经落后于时间表,所以我没有时间学习很多API或尝试了很多选项。

1 个答案:

答案 0 :(得分:1)

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

不使用Timer,而是使用Thread.Sleep(20),因为它不会占用尽可能多的系统资源。这应该会立即改善你。

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

这些只是快速获胜,但您可能需要使用DirectX for Hardware Acceleration来绕过HAL:

  

Windows的硬件抽象层(HAL)实现于   HAL.DLL。 HAL实现了许多功能   由不同的硬件平台以不同的方式实现   在这种背景下,主要指芯片组。其他组件   然后,操作系统可以以相同的方式调用这些函数   平台,不考虑实际实施。