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


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

Платформы

Клиентысерверы Windows 8 — Windows Server 2012

Описание

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

Разработчики по-прежнему должны быть осведомлены о том, как высококонтрастный режим может повлиять на свое приложение и как разработать приложение, которое действительно не зависит от стиля. Это важно, так как в то время как неправильное использование или допущение цветов темы может привести к правильному ведении приложений в визуальном стиле, например Aero, те же приложения реагируют неправильно при высокой контрастности. Например, в Aero текст всегда черный, а цвет выделения — светло-синий. Однако в черном цвете с высокой контрастностью цвет выделения является черным. Если предполагается, что черный текст, как и во многих встроенных приложениях до Windows 8, и использование системного значения по умолчанию для выделения, пользователь увидит черный текст на черном фоне. В этих ситуациях необходимо понять, как правильно использовать темы и системные метрики, чтобы приложение выглядело правильно в разных стилях.

Проявления

  • Они не включены в клиентской области приложений, которые не содержат тег Windows 8 <поддерживается в> манифесте приложения. Поэтому приложения должны визуализировать клиентную область, используя путь кода, необходимый для отрисовки в режиме высокой контрастности классической темы.
  • Темы не включены как в клиентских, так и клиентских областях приложений в темах с высокой контрастностью. Он также не включен в приложениях, которые не содержат тег Windows 8 <supportedOS> в манифесте приложения и которые рисуют в области окна, отличной от клиента, с помощью API DwnIsCompositionEnabled(). Все приложение отображается в режиме высокой контрастности классической темы.
  • Приложения, которые добавляют поддержку Windows 8 в манифесте, но не используют визуальные стили для отрисовки, то есть они жестко кодируют цвета или изображения в своих приложениях, могут неправильно отображаться в темах высокой контрастности. Текст может оказаться трудным для чтения или изображения, так как они должны отображаться в режиме высокой контрастности.

Меры по снижению риска

Цвета текста в темах высокой контрастности были созданы в соответствии с рекомендациями по специальным возможностям Майкрософт. Мы поддерживаем соотношение высокой контрастности между передним планом и фоном в диапазоне от 14:1. Если цвета, включенные по умолчанию, не подходят для конкретного пользователя, их можно легко настроить с помощью параметров панели управления для "Цвет окна" в этих темах с высокой контрастностью.

Эти компоненты пользовательского интерфейса настраиваются в темах высокой контрастности:

  • Цвет фона окна
  • Цвет текста
  • Цвет гиперссылок
  • Отключенный текст
  • Выделенные цвета переднего плана и фона
  • Цвета переднего плана и фона активного окна
  • Неактивные цвета переднего плана и фона
  • Цвета переднего плана и фона кнопки

Решение

Если непредвиденное поведение наблюдается в приложениях в темах высокой контрастности, одно из этих решений может помочь:

  • Манифестирование приложения для Windows 8:

    Приложения, не содержащие тег Windows 8 <поддерживаемыхOS> в манифесте приложения, будут отображаться в клиентских областях без темы. Все встроенные приложения должны содержать эту запись в манифесте приложения. Добавьте значение 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 могут использовать несколько ресурсов, чтобы обеспечить высококонтрастное совместимое приложение:

    • Спецификация цвета CSS W3C задает синтаксис для использования системных метрик вместо определенных цветов.
    • Поддержка запросов мультимедиа с высокой контрастностью добавляется в Internet Explorer 10
    • WWA может использовать метод IAccessibilityCapabilities::get_HighContrast() для проверки состояния высокой контрастности

    Приложения Магазина Windows не имеют много одинаковых проблем с темами, которые присутствуют в классических приложениях Windows, но вам все равно необходимо обеспечить соответствие требованиям высокой контрастности. По умолчанию Internet Explorer игнорирует определенные пользовательские стили и заменяет их значениями, совместимыми с высокой контрастностью. Например, свойства фонового изображения, фона и цвета CSS игнорируются.

    Если вы не хотите, чтобы Internet Explorer не пропускал заданные свойства, и вы убедились, что пользовательский интерфейс совместим с высокой контрастностью, вы можете задать новое свойство 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 2, High Contrast Black и High Contrast White. Убедитесь, что текст четко виден и легко прочитан в темах высокой контрастности.

Ресурсы