Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Заметка
Для приложений в Windows 10 рекомендуется использовать API-интерфейсы Windows.UI.Composition вместо DirectComposition. Дополнительные сведения см. в обновите классическое приложение для рабочего стола с помощьювизуального слоя.
В этом разделе описаны рекомендации по использованию Microsoft DirectComposition.
- наилучшие практики
- вопросы безопасности
- Связанные темы
Лучшие практики
В следующей таблице представлены рекомендации по работе с визуальными элементами Microsoft DirectComposition.
| Практика | Описание |
|---|---|
| После создания устройства DirectComposition вызовите метод IDCompositionDevice::CheckDeviceState в ответ на каждое сообщение WM_PAINT, чтобы убедиться, что устройство по-прежнему действительно. |
Если устройство Инфраструктуры графики Microsoft DirectX (DXGI) потеряно, устройство DirectComposition, связанное с устройством DXGI, также теряется. При обнаружении потерянного устройства DirectComposition отправляет сообщение WM_PAINT всем окнам. Вызов CheckDeviceState в ответ на каждое сообщение WM_PAINT позволяет определить, все еще действителен ли объект устройства DirectComposition и, если нет, предпринять шаги по восстановлению содержимого. Дополнительные сведения см. в объекте Device. |
| Создавайте только то количество визуальных элементов, которое необходимо для композиции или анимации, и уничтожайте их сразу после того, как DirectComposition завершит их использование. |
DirectComposition использует графический модуль обработки (GPU), ресурс, который использует приложение с другими приложениями и операционной системой. Эта практика гарантирует, что все приложения и операционная система получают достаточные ресурсы GPU. Дополнительные сведения см. в разделе Визуальные элементы. |
| Не скрывайте визуальные элементы, задав непрозрачность в значение 0%; Вместо этого удалите визуальные элементы из визуального дерева. |
Для настройки непрозрачности до 0% требуется больше системных ресурсов, чем удаление их из визуального дерева. Дополнительные сведения см. в разделе Opacity и визуальное дерево. |
| Не скрывайте визуальный элемент, применяя пустой (размером ноль) клип-прямоугольник к визуальному элементу. Вместо этого удалите визуальный элемент из визуального дерева. |
Удаление визуального элемента из визуального дерева приводит к повышению производительности, чем применение пустого прямоугольника клипа. Дополнительные сведения см. в разделе обрезки . |
| Не применяйте прямоугольник клипа к визуальному элементу, если прямоугольник клипа не нужен, например прямоугольник клипа, содержащий весь растровый рисунок визуального элемента. |
Ненужные прямоугольники отсечения негативно влияют на производительность системы. Дополнительные сведения см. в разделе об обрезке. |
| Если вам нужна большая одноцветная растровая карта, создайте небольшую растровую поверхность, а затем примените преобразование масштабирования вместо создания полноразмерной поверхности. |
Применение преобразования масштабирования к меньшей поверхности использует меньше системных ресурсов, чем поверхность полного размера. Дополнительные сведения см. в Bitmap объектах и преобразованиях. |
| Избегайте одновременного применения трехмерных преобразований к нескольким уровням визуального дерева, например, к родительскому элементу и его потомкам. |
Применение трехмерных преобразований к нескольким уровням визуального дерева может привести к непредвиденным результатам, так как трехмерные преобразования не умножаются в дереве. Например, поворот на 90 градусов вокруг оси Y на дочернем объекте и поворот 90 градусов вокруг оси Y на родительском элементе приводит к тому, что оба визуальных элемента поворачиваются на нет. Дополнительные сведения см. в разделе Эффекты. |
Вопросы безопасности
В следующих статьях приведены рекомендации по написанию защищенного кода C++ .
- Рекомендации по обеспечению безопасности для C++
- Шаблоны & рекомендации по безопасности приложений