2010-03-19 84 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

相關問題