Рекомендации по 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++ .