Поделиться через


Рекомендации по DirectComposition

Примечание.

Для приложений в Windows 10 рекомендуется использовать API-интерфейсы Windows.UI.Composition вместо DirectComposition. Дополнительные сведения см. в статье "Модернизация классического приложения с помощью визуального слоя".

В этом разделе описаны рекомендации по использованию Microsoft DirectComposition.

Рекомендации

В следующей таблице представлены рекомендации по работе с визуальными элементами Microsoft DirectComposition.

по гибкой разработке Description
После создания устройства DirectComposition вызовите метод IDCompositionDevice::CheckDeviceState в ответ на каждое сообщение WM_PAINT, чтобы убедиться, что устройство по-прежнему допустимо.
Если устройство Инфраструктуры графики Microsoft DirectX (DXGI) потеряно, устройство DirectComposition, связанное с устройством DXGI, также теряется. При обнаружении потерянного устройства DirectComposition отправляет сообщение WM_PAINT во все окна. Вызов CheckDeviceState в ответ на каждое сообщение WM_PAINT позволяет определить, является ли объект устройства DirectComposition допустимым и, если нет, выполните действия по восстановлению содержимого.
Дополнительные сведения см. в разделе "Объект Device".
Создайте только количество визуальных элементов, необходимых для композиции или анимации, и уничтожайте визуальные элементы сразу после завершения DirectComposition.
DirectComposition использует графический модуль обработки (GPU), ресурс, который использует приложение с другими приложениями и операционной системой. Эта практика гарантирует, что все приложения и операционная система получают достаточные ресурсы GPU.
Дополнительные сведения см. в разделе "Визуальные элементы".
Не скрывайте визуальные элементы, задав непрозрачность на 0%; Вместо этого удалите визуальные элементы из визуального дерева.
Для настройки непрозрачности на 0 % требуется больше системных ресурсов, чем удаление их из визуального дерева.
Дополнительные сведения см. в разделе "Непрозрачность " и "Визуальное дерево".
Не скрывайте визуальный элемент, применяя пустой (нулевой размер) прямоугольник клипа к визуальному элементу. Вместо этого удалите визуальный элемент из визуального дерева.
Удаление визуального элемента из визуального дерева приводит к повышению производительности, чем применение пустого прямоугольника клипа.
Дополнительные сведения см. в разделе "Обрезка".
Не применяйте прямоугольник клипа к визуальному элементу, если прямоугольник клипа не нужен, например прямоугольник клипа, содержащий весь растровый рисунок визуального элемента.
Ненужные прямоугольники клипа вредят производительности системы.
Дополнительные сведения см. в разделе "Обрезка".
Если вам нужна большая одноцветная растровая карта, создайте небольшую растровую поверхность, а затем примените преобразование масштабирования вместо создания полноразмерной поверхности.
Применение преобразования масштабирования к меньшей поверхности использует меньше системных ресурсов, чем поверхность полного размера.
Дополнительные сведения см. в разделе "Объекты растровых карт" и "Преобразования".
Избегайте применения трехмерных преобразований к нескольким уровням визуального дерева, например к родительскому и его потомкам.
Применение трехмерных преобразований к нескольким уровням визуального дерева может привести к непредвиденным результатам, так как трехмерные преобразования не умножаются в дереве. Например, поворот на 90 градусов вокруг оси Y на дочернем объекте и поворот 90 градусов вокруг оси Y на родительском элементе приводит к тому, что оба визуальных элемента поворачиваются на нет.
Дополнительные сведения см. в статье Эффекты.

Вопросы безопасности

В следующих статьях приведены рекомендации по написанию защищенного кода C++ .

Использование DirectComposition