Как получить доступ к Desktop Composition Engine из приложения WinForms? - PullRequest
1 голос
/ 19 марта 2010

Можно ли получить доступ к Desktop Composition Engine в Windows Vista из приложения winforms? Очевидно, что DCE включает в себя приложения, выполняющие рендеринг в буферах DCE, а не непосредственно на экран. Поскольку приложение winforms не может получить информацию о частоте обновления монитора и состоянии линии сканирования (кроме как через DirectX), анимация в приложении winforms подвержена эффектам отрыва. При включенном DCE эффект разрыва уменьшается, но все еще существует (очевидно, DCE все еще может захватить буфер, в котором ваше приложение находится на полпути для записи, и отобразить его на экране, создавая таким образом половину кадра Следующие разрывные эффекты).

Есть ли способ для моего приложения winforms связаться с DCE и избежать рендеринга во время переключения буфера?

1 Ответ

1 голос
/ 19 марта 2010

Не могли бы вы импортировать DWMAPI.DLL, вызвать DwmGetCompositionTimingInfo , отделить структуру DWM_TIMING_INFO и синхронизировать ваше приложение с любой информацией о времени, которую вы можете различить?

Кроме того, вы можете управлять им с помощью DwmSetDxFrameDuration

...