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


Отрисовка элементов управления с применением визуальных стилей

.NET Framework обеспечивает поддержку отрисовки элементов управления и других элементов пользовательского интерфейса Windows при помощи визуальных стилей в поддерживающей их операционной системе. В этом разделе описано несколько уровней поддержки в .NET Framework для отрисовки элементов управления и других элементов пользовательского интерфейса с текущим визуальным стилем операционной системы.

Классы отрисовки для общих элементов управления

Отрисовка элемента управления заключается в прорисовке пользовательского интерфейса элемента управления. Пространство имен System.Windows.Forms обеспечивает класс ControlPaint для отрисовки некоторых общих элементов управления Windows Forms. Однако этот класс прорисовывает элементы управления в классическом стиле Windows, что может затруднить сохранение единого внешнего вида пользовательского интерфейса при прорисовке пользовательских элементов в приложениях с включенными визуальными стилями.

.NET Framework 2.0 включает классы в пространстве имен System.Windows.Forms, которые прорисовывают части и состояния общих элементов управления с визуальными стилями. Каждый из этих классов содержит методы static для рисования элемента управления или его частей в определенном состоянии с текущим визуальным стилем операционной системы.

Некоторые из этих классов предназначены для рисования связанного элемента управления независимо от наличия визуальных стилей. Если визуальные стили включены, члены класса прорисуют связанный элемент управления с визуальными стилями; если визуальные стили отключены, члены класса прорисуют элемент управления в классическом стиле Windows. В число этих классов входят следующие.

Другие классы могут прорисовать связанный элемент управления только если доступны визуальные стили, и если они отключены, члены этих классов вызовут исключение. В число этих классов входят следующие.

Дополнительные сведения об использовании этих классов для рисования элемента управления см. в разделе Практическое руководство. Использование класса визуализации элемента управления.

Элемент визуального стиля и классы отрисовки

Пространство имен System.Windows.Forms.VisualStyles содержит классы, которые можно использовать для рисования и получения сведений о любом элементе управления или элементе пользовательского интерфейса, поддерживаемом визуальными стилями. Поддерживаемые элементы управления включают общие элементы управления с классами отрисовки в пространстве имен System.Windows.Forms (см. предыдущий раздел), а также другие элементы управления, такие как элементы управления вкладок и главных панелей. В число других поддерживаемых элементов пользовательского интерфейса входят части меню Пуск, панель задач и не клиентская область окон.

Главные классы пространства имен System.Windows.Forms.VisualStylesVisualStyleElement и VisualStyleRenderer. Класс VisualStyleElement является основным для определения поддержки какого-либо элемента управления или элемента пользовательского интерфейса стилями оформления. Помимо самого VisualStyleElement, пространство имен System.Windows.Forms.VisualStyles содержит много вложенных классов VisualStyleElement со свойствами static, которые возвращают VisualStyleElement для каждого состояния элемента управления, части элемента управления или другого элемента пользовательского интерфейса, поддерживаемого визуальными стилями.

VisualStyleRenderer обеспечивает методы, позволяющие рисовать и получать сведения о каждом элементе управления VisualStyleElement, определенном текущим визуальным стилем операционной системы. Для элемента управления можно получить сведения о его размере по умолчанию, типе фона и определениях цвета. Класс VisualStyleRenderer включает функциональные возможности интерфейса API стилей оформления (UxTheme) из части оболочки Windows пакета SDK для Windows Platform. Дополнительные сведения см. в статье "Использование визуальных стилей Windows XP" в части пакета Platform SDK библиотеки MSDN, расположенной по адресу https://msdn.microsoft.com/ru-ru/library/default.aspx.

Дополнительные сведения об использовании аргументов VisualStyleRenderer и VisualStyleElement см. в разделе Практическое руководство. Отображение элементов с использованием визуальных стилей.

Включение визуальных стилей

Чтобы включить визуальные стили для приложения, написанного для .NET Framework версии 1.0, программисты должны включить манифест приложения, определяющий использование библиотеки ComCtl32.dll версии 6 или более новой версии для прорисовки элементов управления. Приложения, собранные с помощью .NET Framework версии 1.1 или новее могут использовать метод Application.EnableVisualStyles класса Application.

Проверка поддержки визуальных стилей

Свойство RenderWithVisualStyles класса Application устанавливает, будет ли текущее приложение прорисовывать элементы управления с визуальными стилями. При рисовании пользовательского элемента управления можно проверить значение свойства RenderWithVisualStyles и удостовериться, будет ли элемент управления прорисован с визуальными стилями. В следующей таблице перечислены четыре обязательных условия, чтобы RenderWithVisualStyles возвращал значение true.

Атрибут Condition

Примечания

Эта операционная система поддерживает визуальные стили.

Чтобы проверить это условие отдельно, используйте свойство IsSupportedByOS класса VisualStyleInformation.

Визуальные стили включены пользователем в операционной системе.

Чтобы проверить это условие отдельно, используйте свойство IsEnabledByUser класса VisualStyleInformation.

Включить стили включены в приложении.

Визуальные стили в приложении можно включить путем вызова метода Application.EnableVisualStyles или при помощи манифеста приложения, определяющего использование ComCtl32.dll версии 6 или новее для прорисовки элементов управления.

Визуальные стили используются для прорисовки клиентской области окна приложения.

Чтобы проверить это условие отдельно, используйте свойство Application класса VisualStyleState.ClientAreaEnabled и убедитесь, что оно имеет значение VisualStyleState.ClientAndNonClientAreasEnabled или VisualStyleState.

Чтобы определить, когда пользователь включает или отключает визуальные стили или переключается между ними, просмотрите значение UserPreferenceCategory.VisualStyle в обработчиках для событий SystemEvents.UserPreferenceChanging или SystemEvents.UserPreferenceChanged.

Важно!

Если для визуализации элемента управления или элемента пользовательского интерфейса при включении или отключении визуальных стилей требуется использовать VisualStyleRenderer удостоверьтесь, что это выполняется при обработке события UserPreferenceChanged, а не UserPreferenceChanging.Если при обработке UserPreferenceChanging использовать класс VisualStyleRenderer, возникнет исключение.

См. также

Другие ресурсы

Рисование и отрисовка пользовательского элемента управления