2010-03-19 55 views
1

是否可以通过winforms应用程序访问Windows Vista中的桌面组合引擎? DCE显然涉及到应用程序呈现给DCE缓冲区而不是直接到屏幕。由于Winforms应用程序无法获取有关显示器的刷新率和扫描线状态的信息(通过DirectX除外),因此WinForms应用程序中的动画会受到撕裂效果的影响。启用DCE后,撕裂效果会减弱,但仍然存在(显然,DCE仍然可以获取缓冲区,通过写入并将其呈现在屏幕中途,您的应用程序处于中途缓冲区,从而产生半个帧的一半 - 下一个撕裂效果)。如何从WinForms应用程序访问桌面排版引擎?

有没有办法让我的winforms应用程序与DCE通信,并可能避免在缓冲区切换时间内渲染?

回答

1

您可以导入DWMAPI.DLL,请致电DwmGetCompositionTimingInfo,拆开DWM_TIMING_INFO结构,并将您的应用程序与任何可识别的时间信息同步。

或者,您可能可以通过控制它DwmSetDxFrameDuration

+0

这看起来像我正在寻找。你有没有遇到过任何包装它的C#示例? – MusiGenesis 2010-03-19 18:46:57

+0

我没有。但是这个博客看起来很有前途,要么有示例要么有链接到示例 - http://blogs.msdn.com/greg_schechter/archive/tags/DWM/default.aspx – 2010-03-19 18:51:11

相关问题