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


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

Платформ

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

Ресурсы