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