Режим высокой контрастности

Платформы

Клиенты — 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. Убедитесь, что текст хорошо виден и легко читается в высококонтрастных темах.

Ресурсы