Режим высокой контрастности
Платформ
клиенты — Windows 8
серверы — Windows Server 2012
Описание
В предыдущих операционных системах Windows режим высокой контрастности был ограничен темами, работающими под классическими темами, которые не были визуально стили. В Windows 8 и Windows Server 2012 классический режим был удален и заменен визуальным стилем тем высокой контрастности. Одним из основных преимуществ этого изменения является удаление отдельного пути кода для приложений, работающих в классическом режиме.
Разработчики по-прежнему должны быть образованными в том, как высококонтрастный режим может повлиять на свое приложение и как разработать приложение, которое действительно отличается от стиля. Это важно, так как неправильное использование или предположение цветов темы может привести к правильному выполнению приложений в визуальном стиле, например Aero, те же приложения реагируют неправильно при высокой контрастности. Например, в Aero текст всегда черный, а цвет выделения — светло-синий. Однако в черном цвете с высокой контрастностью цвет выделения черный. Если предполагается, что черный текст, как и в большинстве встроенных приложений до Windows 8, и используется система по умолчанию для выделения, пользователь увидит черный текст на черном фоне. В этих ситуациях необходимо понять, как правильно использовать темы и системные метрики, чтобы приложение выглядело правильно в разных стилях.
Проявления
- Они не включены в клиентской области приложений, которые не содержат тег windows 8 <поддерживаемых> OS в манифесте приложения. Таким образом, приложения должны отображать клиентская область, используя путь кода, необходимый для отрисовки в режиме высокой контрастности классической темы.
- Они не включены как в клиентских областях, так и в клиентских областях приложений в темах высокой контрастности. Он также не включен в приложениях, которые не содержат тег windows 8 <поддерживаемых> OS в манифесте приложения, и которые рисуют в области окна, отличной от клиента, с помощью API DwnIsCompositionEnabled(). Все приложение отрисовывается в режиме высокой контрастности классической темы.
- Приложения, которые добавляют поддержку Windows 8 в манифесте, но не используют визуальные стили для отрисовки, то есть они жестко кодируют цвета или изображения в своих приложениях, могут не отображаться правильно в темах высокой контрастности. Текст может оказаться трудным для чтения или изображения, так как они должны отображаться в режиме высокой контрастности.
Смягчение
Цвета текста в темах высокой контрастности были созданы для соответствия рекомендациям майкрософт по специальным возможностям. Мы поддерживаем соотношение высокой контрастности между передним планом и фоном в диапазоне от 14:1. Если цвета, включенные по умолчанию, не подходят для конкретного пользователя, их можно легко настроить с помощью параметров панели управления для параметра "Цвет окна" в этих темах высокой контрастности.
Эти компоненты пользовательского интерфейса настраиваются в темах высокой контрастности:
- Цвет фона окна
- Цвет текста
- Цвет гиперссылок
- Отключенный текст
- Выделенные цвета переднего плана и фона
- Активный заголовок окна переднего плана и цвета фона
- Неактивные цвета окна переднего плана и фона
- Цвета переднего плана и фона кнопки
Решение
Если непредвиденное поведение отображается в приложениях в темах высокой контрастности, одно из этих решений может помочь:
Манифестирование приложения для Windows 8:
Приложения, которые не содержат поддерживаемые тегом> Windows 8 <> в манифесте приложения, будут отображаться в клиентских областях без темы. Встроенные приложения должны содержать эту запись в манифесте приложения. Добавьте значение GUID 4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38 GUID для Windows 8.
Использование визуальных стилей с пользовательскими интерфейсами, нарисованными владельцем:
Элементы управления, нарисованные владельцем, должны следовать инструкциям по MSDN для правильной отрисовки элементов управления и состояний, включая текст. Разработчики не должны полагаться на цвет текста или фона, указанный в контексте устройства, чтобы использовать методы, отличные от UxTheme для отрисовки. В случае, если для элемента управления нет темы, используйте GetThemeSysColor с соответствующими метриками и рисуйте текст с помощью стандартных методов GDI. Если ни один из вызовов UxTheme не подходит, используйте метод GetSysColor для получения соответствующей метрики.
Выбор цвета текста:
Не используйте жестко закодированный цвет текста, даже если предполагается, что он выглядит хорошо во всех распространенных сценариях. Темы доставки создаются таким образом, чтобы обеспечить высокую видимость со связанными метриками. Например, COLOR_HIGHLIGHTTEXT используется с COLOR_HIGHLIGHT в качестве фона и COLOR_WINDOWTEXT предназначена для использования с COLOR_WINDOW в качестве фона. Если существуют исключения для этих связей, работайте с ними в частях темы и определениях состояний, а не в коде. При проектировании интерфейсов UIs высокой контрастности важно, чтобы пользовательский интерфейс не зависит от применяемой в настоящее время темы высокой контрастности, так как пользователи с высокой контрастностью могут настраивать свои цвета.
реагирование на событие WM_ThemeChange:
Если приложение кэширует цвета, полученные из темы, или применяет цвета в нестандартном режиме, добавьте обработчик сообщений для WM_THEMECHANGE, который пересчитывает сохраненные значения цвета и переопределяет пользовательский интерфейс.
написание приложения WWA с высокой контрастностью:
Веб-приложения не имеют доступа к API-интерфейсам UxTheme, но по-прежнему должны быть записаны с помощью текущих системных метрик в качестве основы для пользовательского интерфейса. Существует несколько ресурсов для разработчиков WWA, чтобы обеспечить высокую контрастность приложения:
- спецификация цвета CSS W3C задает синтаксис для использования системных метрик вместо определенных цветов.
- Поддержка запросов мультимедиа с высокой контрастностью добавляется в Internet Explorer 10
- WWAs может использовать метод IAccessibilityCapabilities::get_HighContrast() для проверки состояния высокой контрастности
У приложений Магазина Windows не было много тех же проблем с темами, которые присутствуют в классических приложениях Windows, но вам по-прежнему необходимо обеспечить соответствие высокой контрастности. По умолчанию Internet Explorer игнорирует определенные пользовательские стили и заменяет их значениями, совместимыми с высокой контрастностью. Например, свойства фона, фона и цвета CSS игнорируются.
Если вы не хотите, чтобы Internet Explorer игнорировать какие-либо свойства, которые вы задали, и убедитесь, что пользовательский интерфейс соответствует высокой контрастности, вы можете задать новое свойство CSS M3 —ms-high-контрастность: отключено в родительском элементе.
Написание приложения Магазина Windows с высокой контрастностью:
Приложение Магазина Windows должно использовать класс SystemColors для определения правильного цвета элементов пользовательского интерфейса, учитывая, что некоторые системные цвета метрик предназначены для совместного использования, таких как SystemColors.WindowColor и SystemColors.WindowTextColor. Это упрощает превосходный высококонтрастный опыт.
Правильное определение высокой контрастности в предыдущих версиях Windows:
Приложения, работающие в предыдущих версиях Windows, не имеют доступа к новым темам высокой контрастности, даже если манифест указывает совместимость с версией Windows в вопросе. Таким образом, может потребоваться вставить дополнительные пути кода для обработки отрисовки в классической среде, используемой в предыдущих версиях Windows. Наличие высокой контрастности в этом случае необходимо проверить, вызвав функцию SystemParametersInfo с флагом SPI_GETHIGHCONTRAST. Это единственный поддерживаемый способ проверки наличия высокой контрастности.
Тесты
При тестировании приложения убедитесь, что он правильно отображается во всех встроенных темах, предоставляемых Windows 8: Aero, Basic, High Contrast 1, High Contrast 2, High Контрастный черный и Высокий контрастный белый. Убедитесь, что текст виден и легко читать в темах высокой контрастности.
Ресурсы
- классы, части и штаты (новая базовая тема и темы с высокой контрастностью также используют эти состояния)
- части и состояния, общие для всех визуальных стилей
- использование визуальных стилей с пользовательскими и Owner-Drawn элементами управления
- функции GetSysColor
- цветового модуля W3C CSS уровня 3
- класса SystemColors
- функции SystemParametersInfo
- специальных возможностей Майкрософт