Compartilhar via


Modo de alto contraste

Plataformas

clientes do – Windows 8
Servers – Windows Server 2012

Descrição

Em sistemas operacionais Windows anteriores, o modo de alto contraste era limitado a temas em execução em temas clássicos, que não eram visualmente estilizados. No Windows 8 e no Windows Server 2012, o modo clássico foi removido e substituído por temas de alto contraste com estilo visual. Um dos principais benefícios dessa alteração é a remoção de um caminho de código separado para aplicativos em execução no modo clássico.

Os desenvolvedores ainda precisam ser educados sobre como o modo de alto contraste pode afetar seu aplicativo e como desenvolver um aplicativo que seja realmente independente de estilo. Isso é importante porque, embora o uso incorreto ou a suposição de cores de tema possam fazer com que os aplicativos se comportem corretamente sob um estilo visual como o Aero, esses mesmos aplicativos respondem incorretamente sob alto contraste. Por exemplo, no Aero, o texto é sempre preto e a cor de realce é azul claro. No entanto, em preto de alto contraste, a cor de realce é preta. Se você assumir o texto preto, como tem sido o caso em muitos aplicativos in-box antes do Windows 8 e usar o padrão do sistema para realçar, o usuário verá o texto preto em uma tela de fundo preta. É necessário nessas situações entender como usar temas e métricas do sistema corretamente para que o aplicativo fique correto entre estilos.

Manifestações

  • O tema não está habilitado na área de cliente de aplicativos que não contêm uma marca de> do Windows 8 <com suporte no manifesto do aplicativo. Portanto, os aplicativos devem renderizar a área do cliente, usando o caminho de código necessário para renderizar no modo de alto contraste do tema clássico.
  • O tema não está habilitado nas áreas não cliente e cliente de aplicativos em temas de alto contraste. Ele também não está habilitado em aplicativos que não contêm uma marca de> do Windows 8 <com suporte no manifesto do aplicativo e que desenham na área não cliente de uma janela usando a API DwnIsCompositionEnabled(). O aplicativo inteiro é renderizado no modo de alto contraste do tema clássico.
  • Aplicativos que adicionam suporte ao Windows 8 em seu manifesto, mas não usam estilos visuais para renderização, ou seja, codificam cores ou imagens em seus aplicativos, podem não renderizar corretamente em temas de alto contraste. O texto pode ser difícil de ler ou as imagens podem não aparecer como deveriam no modo de alto contraste.

Mitigação

As cores de texto nos temas de alto contraste foram criadas para estarem em conformidade com as diretrizes de acessibilidade da Microsoft. Mantemos uma taxa de alto contraste 14:1 entre o primeiro plano e o plano de fundo. Se as cores habilitadas por padrão não forem adequadas para um usuário final específico, elas poderão ser facilmente personalizadas por meio das configurações do painel de controle para "Cor da Janela" nesses temas de alto contraste.

Esses componentes de interface do usuário são personalizáveis em temas de alto contraste:

  • Cor da tela de fundo da janela
  • Cor do texto
  • Cor dos hiperlinks
  • Texto desabilitado
  • Cores de plano de fundo e primeiro plano de texto selecionadas
  • Cores de primeiro plano e plano de fundo do título da janela ativa
  • Cores de primeiro plano e de plano de fundo do título da janela inativa
  • Cores de primeiro plano e plano de fundo do botão

Solução

Se um comportamento inesperado for visto em aplicativos em temas de alto contraste, uma dessas soluções poderá ajudar:

  • Manifestar um aplicativo para Windows 8:

    Aplicativos que não contêm a marca de> do Windows 8 <com suporte no manifesto do aplicativo terão suas áreas de cliente renderizadas sem um tema. Todos os aplicativos em caixa devem conter essa entrada no manifesto do aplicativo. Adicione o valor guid 4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38 para Windows 8.

  • Usando estilos visuais com interfaces do usuário desenhadas pelo proprietário:

    Os controles desenhados pelo proprietário devem seguir as instruções sobre MSDN para renderizar corretamente partes e estados de controle, incluindo texto. Os desenvolvedores não devem contar com o texto ou a cor da tela de fundo especificada em um contexto de dispositivo para usar métodos não UxTheme para renderização. No caso em que não houver nenhuma parte de tema para o controle em questão, use GetThemeSysColor com a métrica apropriada e desenhe o texto usando métodos GDI padrão. Se nenhuma das chamadas UxTheme for apropriada, use o método GetSysColor para obter a métrica apropriada.

  • Selecionando a cor do texto:

    Não use uma cor de texto codificada, mesmo que seja considerada boa em todos os cenários comuns. Os temas de envio são criados de forma a dar suporte à alta visibilidade com as métricas associadas. Por exemplo, COLOR_HIGHLIGHTTEXT deve ser usado com COLOR_HIGHLIGHT como plano de fundo e COLOR_WINDOWTEXT deve ser usado com COLOR_WINDOW como plano de fundo. Se houver exceções a essas associações, trabalhe com elas nas partes do tema e nas próprias definições de estado e não no código. Ao criar interfaces do usuário de alto contraste, é crucial que a interface do usuário seja independente do tema de alto contraste atualmente aplicado, pois os usuários de alto contraste podem personalizar suas cores.

  • respondendo ao evento WM_ThemeChange:

    Se o aplicativo armazenar em cache as cores recuperadas do tema ou aplicar cores de forma diferente do padrão, adicione um manipulador de mensagens para WM_THEMECHANGE que recalculará os valores de cor armazenados e reintizará a interface do usuário.

  • Escrever um aplicativo WWA de alto contraste:

    Os aplicativos Web não têm acesso às APIs do UxTheme, mas ainda devem ser gravados com as métricas atuais do sistema como base para a interface do usuário. Há alguns recursos para os desenvolvedores do WWA aproveitarem para garantir um aplicativo compatível com alto contraste:

    • A especificação de cor do CSS do W3C especifica a sintaxe para usar as métricas do sistema em vez de cores específicas
    • O suporte para consultas de mídia de alto contraste está sendo adicionado ao Internet Explorer 10
    • As WWAs podem aproveitar o método IAccessibilityCapabilities::get_HighContrast() para verificar o estado de alto contraste

    Os aplicativos da Windows Store não têm muitos dos mesmos problemas com as partes de tema presentes nos Aplicativos Clássicos do Windows, mas você ainda precisa garantir a conformidade de alto contraste. Por padrão, o Internet Explorer ignora determinados estilos definidos pelo usuário e os substitui por valores compatíveis com alto contraste. Por exemplo, as propriedades CSS de plano de fundo, plano de fundo e cor são ignoradas.

    Se você não quiser que o Internet Explorer ignore as propriedades definidas e tenha certeza de que a interface do usuário está em conformidade com alto contraste, você pode definir a nova propriedade M3 CSS –ms-high-contrast: desativada em um elemento pai.

  • Escrever um aplicativo da Windows Store de alto contraste:

    O aplicativo da Windows Store deve usar a classe SystemColors para determinar a coloração de elemento de interface do usuário adequada, tendo em mente que determinadas cores de métrica do sistema foram projetadas para serem usadas em conjunto, como SystemColors.WindowColor e SystemColors.WindowTextColor. Isso facilita uma experiência de alto contraste superior.

  • Detectar corretamente alto contraste em versões anteriores do Windows:

    Os aplicativos em execução em versões anteriores do Windows não têm acesso aos novos temas de alto contraste, mesmo que o manifesto especifique a compatibilidade com a versão do Windows em questão. Dessa forma, pode ser necessário inserir caminhos de código adicionais para lidar com a renderização no ambiente clássico usado em versões anteriores do Windows. A presença de alto contraste nesse caso deve ser verificada chamando a função SystemParametersInfo com o sinalizador SPI_GETHIGHCONTRAST. Essa é a única maneira suportada de verificar a presença de alto contraste.

Testes

Ao testar um aplicativo, verifique se ele é renderizado corretamente em todos os temas in-box fornecidos pelo Windows 8: Aero, Basic, High Contrast 1, High Contrast 2, High Contrast Black e High Contrast White. Verifique se o texto está claramente visível e fácil de ler nos temas de alto contraste.

Recursos