【问题标题】:How to access the Desktop Composition Engine from a WinForms app?如何从 WinForms 应用程序访问桌面组合引擎?
【发布时间】:2010-03-19 17:30:09
【问题描述】:

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

我的 winforms 应用程序有什么方法可以与 DCE 通信并可能避免在缓冲区切换期间呈现?

【问题讨论】:

    标签: c# winforms windows-vista


    【解决方案1】:

    您能否导入 DWMAPI.DLL,调用 DwmGetCompositionTimingInfo,拆开 DWM_TIMING_INFO 结构并将您的应用与您可以识别的任何时间信息同步?

    或者,您可以使用DwmSetDxFrameDuration 控制它

    【讨论】:

    猜你喜欢
    • 2015-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-23
    • 2010-11-28
    • 1970-01-01
    相关资源
    最近更新 更多