Режим высокой контрастности
Платформы
Клиенты — Windows 8
Серверы — Windows Server 2012
Описание
В предыдущих операционных системах Windows режим высокой контрастности ограничивался темами, которые выполнялись под классическими темами, которые не были визуально стили. В Windows 8 и Windows Server 2012 классический режим был удален и заменен визуальными темами с высокой контрастностью. Одним из main преимуществ этого изменения является удаление отдельного пути кода для приложений, работающих в классическом режиме.
Разработчики по-прежнему должны быть осведомлены о том, как режим высокой контрастности может повлиять на их приложение и как разработать приложение, которое действительно не зависит от стиля. Это важно, поскольку, хотя неправильное использование или предположение о цветах темы может привести к правильному поведении приложений в визуальном стиле, таком как Aero, эти же приложения неправильно реагируют при высокой контрастности. Например, в Aero текст всегда черный, а цвет выделения — светло-синий. В черном с высокой контрастностью, однако, цвет выделения черный. Если вы предполагаете черный текст, как это было во многих встроенных приложениях до Windows 8, и используете системное значение по умолчанию для выделения, пользователь увидит черный текст на черном фоне. В таких ситуациях необходимо понять, как правильно использовать темы и системные метрики, чтобы приложение выглядело правильно в разных стилях.
Проявления
- Тема не включена в клиентской области приложений, которые не содержат тега Windows 8 <supportedOS> в манифесте приложения. Поэтому приложения должны отрисовывать клиентную область, используя путь к коду, необходимый для отрисовки в режиме высокой контрастности классической темы.
- Тема не включена как в неклиентской, так и в клиентской областях приложений в темах с высокой контрастностью. Он также не включен в приложениях, которые не содержат тега Windows 8 <supportedOS> в манифесте приложения и рисуют в не клиентской области окна с помощью API DwnIsCompositionEnabled(). Все приложение отрисовывается в режиме высокой контрастности классической темы.
- Приложения, которые добавляют поддержку Windows 8 в своем манифесте, но не используют визуальные стили для отрисовки, то есть они жестко кодируют цвета или изображения в своих приложениях, могут не отображаться правильно в темах с высокой контрастностью. Текст может быть трудно читать или изображения могут не отображаться в режиме высокой контрастности.
Меры по снижению риска
Цвета текста в темах с высокой контрастностью были созданы в соответствии с рекомендациями майкрософт по специальным возможностям. Мы поддерживаем соотношение высокой контрастности 14:1 между передним планом и фоном. Если цвета, включенные по умолчанию, не подходят для конкретного пользователя, их можно легко настроить с помощью параметров панели управления для параметра "Цвет окна" в этих темах с высокой контрастностью.
Эти компоненты пользовательского интерфейса можно настроить в темах с высокой контрастностью:
- Цвет фона окна
- Цвет текста
- Цвет гиперссылок
- Отключенный текст
- Выделенный цвет переднего плана и фона выделенного текста
- Цвета переднего плана и фона заголовка активного окна
- Цвета переднего плана и фона в заголовке неактивного окна
- Цвета переднего плана и фона кнопки
Решение
Если в приложениях в высококонтрастных темах наблюдается непредвиденное поведение, может помочь одно из следующих решений:
Манифестирование приложения для Windows 8:
Приложения, которые не содержат тега Windows 8 <supportedOS> в манифесте приложения, будут отображать свои клиентские области без темы. Все встроенные приложения должны содержать эту запись в манифесте приложения. Добавьте значение GUID 4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38 для Windows 8.
Использование визуальных стилей с пользовательскими интерфейсами, нарисованными владельцем:
Элементы управления, нарисованные владельцем, должны следовать инструкциям на сайте MSDN для правильной отрисовки частей и состояний элементов управления, включая текст. Разработчики не должны полагаться на текст или цвет фона, указанный в контексте устройства, чтобы использовать для отрисовки методы, отличные от UxTheme. Если для соответствующего элемента управления нет части темы, используйте GetThemeSysColor с соответствующей метрикой и нарисуйте текст с помощью стандартных методов GDI. Если ни один из вызовов UxTheme не подходит, используйте метод GetSysColor, чтобы получить соответствующую метрику.
Выбор цвета текста:
Не используйте жестко закодированный цвет текста, даже если предполагается, что он выглядит хорошо во всех распространенных сценариях. Темы доставки создаются таким образом, чтобы обеспечить высокую видимость связанных метрик. Например, COLOR_HIGHLIGHTTEXT используется с COLOR_HIGHLIGHT в качестве фона, а COLOR_WINDOWTEXT — с COLOR_WINDOW в качестве фона. При наличии исключений из этих связей работайте с ними в частях темы и определениях состояний, а не в коде. При разработке высококонтрастных пользовательских интерфейсов крайне важно, чтобы пользовательский интерфейс был не зависят от применяемой в настоящее время темы с высокой контрастностью, так как пользователи с высокой контрастностью могут настраивать свои цвета.
Реагирование на событие WM_ThemeChange:
Если приложение кэширует цвета, полученные из темы, или применяет цвета нестандартным образом, добавьте обработчик сообщений для WM_THEMECHANGE, который пересчитывает сохраненные значения цветов и перерисовывает пользовательский интерфейс.
Написание высококонтрастного приложения WWA:
Веб-приложения не имеют доступа к API-интерфейсам UxTheme, но они по-прежнему должны быть написаны с использованием текущих системных метрик в качестве основы для пользовательского интерфейса. Существует несколько ресурсов, которые разработчики WWA могут использовать для обеспечения высококонтрастного приложения.
- Спецификация W3C CSS Color определяет синтаксис для использования системных метрик вместо определенных цветов
- Поддержка высококонтрастных мультимедийных запросов добавлена в Интернет Обозреватель 10
- WWA могут использовать метод IAccessibilityCapabilities::get_HighContrast() для проверка состояния высокой контрастности.
У приложений Магазина Windows не так много проблем с частями темы, которые присутствуют в классических приложениях Для Windows, но вам по-прежнему нужно обеспечить соответствие требованиям высокой контрастности. По умолчанию интернет-Обозреватель игнорирует определенные пользовательские стили и заменяет их значениями, совместимыми с высокой контрастностью. Например, свойства CSS фонового изображения, фона и цвета игнорируются.
Если вы не хотите, чтобы Обозреватель Интернета пропускали все заданные свойства и убедитесь, что пользовательский интерфейс соответствует требованиям высокой контрастности, можно установить новое свойство CSS M3 –ms-high-contrast: в родительском элементе.
Создание высококонтрастного приложения Магазина 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 Contrast Black и High Contrast White. Убедитесь, что текст хорошо виден и легко читается в высококонтрастных темах.
Ресурсы
- Классы, части и состояния стилей Aero (новая базовая тема и темы с высокой контрастностью также используют эти состояния)
- Части и состояния, общие для всех стилей визуальных элементов
- Использование визуальных стилей с пользовательскими и Owner-Drawn элементами управления
- Функция GetSysColor
- W3C CSS Color Module Level 3
- Класс SystemColors
- Функция SystemParametersInfo
- Специальные возможности корпорации Майкрософт