Compartir a través de


Modo de contraste alto

Plataformas

Clientes: servidores Windows 8: Windows Server 2012

Descripción

En sistemas operativos Windows anteriores, el modo de contraste alto se limitaba a los temas que se ejecutan en temas clásicos, que no tenían un estilo visual. En Windows 8 y Windows Server 2012, el modo clásico se ha quitado y reemplazado por temas de contraste alto con estilo visual. Una de las principales ventajas de este cambio es la eliminación de una ruta de acceso de código independiente para las aplicaciones que se ejecutan en modo clásico.

Los desarrolladores todavía tienen que informarse sobre cómo el modo de contraste alto puede afectar a su aplicación y cómo desarrollar una aplicación que sea realmente independiente del estilo. Esto es importante porque, aunque el uso incorrecto o suposición de colores de tema puede hacer que las aplicaciones se comporten correctamente bajo un estilo visual como Aero, esas mismas aplicaciones responden incorrectamente bajo contraste alto. Por ejemplo, en Aero, el texto siempre es negro y el color de resaltado es un azul claro. Sin embargo, en negro de contraste alto, el color de resaltado es negro. Si se supone que el texto negro, como ha sido el caso en muchas aplicaciones incorporadas antes de Windows 8, y usa el valor predeterminado del sistema para resaltarlo, el usuario verá texto negro en un fondo negro. En estas situaciones es necesario comprender cómo usar correctamente los temas y las métricas del sistema para que la aplicación tenga un aspecto correcto entre estilos.

Manifestaciones

  • El tema no está habilitado en el área cliente de aplicaciones que no contienen una etiqueta Windows 8 <supportedOS> en su manifiesto de aplicación. Por lo tanto, las aplicaciones deben representar el área cliente mediante la ruta de acceso de código necesaria para representarse en modo de contraste alto del tema clásico.
  • La creación de temas no está habilitada en las áreas no cliente y cliente de las aplicaciones en temas de contraste alto. Tampoco está habilitado en las aplicaciones que no contienen una etiqueta Windows 8 <supportedOS> en su manifiesto de aplicación y que dibujan en el área que no es cliente de una ventana mediante la API DwnIsCompositionEnabled(). Toda la aplicación se representa en el modo de contraste alto del tema clásico.
  • Las aplicaciones que agregan compatibilidad con Windows 8 en su manifiesto, pero no usan estilos visuales para la representación, es decir, codifican de forma rígida colores o imágenes en sus aplicaciones, podrían no representarse correctamente en temas de contraste alto. Es posible que el texto sea difícil de leer o que las imágenes no aparezcan como deberían en modo de contraste alto.

Mitigación

Los colores de texto de los temas de contraste alto se han creado para que sean compatibles con las directrices de accesibilidad de Microsoft. Mantenemos una relación de contraste alto de 14:1 entre primer plano y fondo. Si los colores habilitados de forma predeterminada no son adecuados para un usuario final determinado, se pueden personalizar fácilmente a través de la configuración del panel de control para "Color de la ventana" en esos temas de contraste alto.

Estos componentes de interfaz de usuario son personalizables en temas de contraste alto:

  • Color de fondo de la ventana
  • Color del texto
  • Color de hipervínculos
  • Texto deshabilitado
  • Colores de primer plano y fondo de texto seleccionados
  • Colores de primer plano y fondo del título de la ventana activa
  • Colores de primer plano y fondo de la ventana inactivos
  • Colores de primer plano y fondo del botón

Solución

Si se ve un comportamiento inesperado en las aplicaciones en temas de contraste alto, una de estas soluciones puede ayudar:

  • Manifiesto de una aplicación para Windows 8:

    Las aplicaciones que no contienen la etiqueta Windows 8 <supportedOS> en el manifiesto de la aplicación tendrán sus áreas de cliente representadas sin un tema. Todas las aplicaciones incorporadas deben contener esta entrada en el manifiesto de la aplicación. Agregue el valor 4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38 GUID para Windows 8.

  • Uso de estilos visuales con interfaces de usuario dibujadas por el propietario:

    Los controles dibujados por el propietario deben seguir las instrucciones de MSDN para representar correctamente los estados y los elementos de control, incluido el texto. Los desarrolladores no deben confiar en el texto o el color de fondo especificados en un contexto de dispositivo para usar métodos que no son UxTheme para la representación. En el caso de que no haya ninguna parte de tema para el control en cuestión, use GetThemeSysColor con la métrica adecuada y dibuje el texto mediante métodos GDI estándar. Si ninguna de las llamadas a UxTheme es adecuada, use el método GetSysColor para obtener la métrica adecuada.

  • Selección del color del texto:

    No use un color de texto codificado de forma rígida, incluso si se supone que tiene un aspecto correcto en todos los escenarios comunes. Los temas de envío se crean de forma que admita una alta visibilidad con las métricas asociadas. Por ejemplo, COLOR_HIGHLIGHTTEXT está pensada para usarse con COLOR_HIGHLIGHT como fondo y COLOR_WINDOWTEXT está pensada para usarse con COLOR_WINDOW como fondo. Si hay excepciones a estas asociaciones, trabaje con ellas en los elementos de tema y las definiciones de estado y no en el código. Al diseñar interfaces de usuario de contraste alto, es fundamental que la interfaz de usuario sea independiente del tema de contraste alto aplicado actualmente, ya que los usuarios de contraste alto pueden personalizar sus colores.

  • Responder al evento WM_ThemeChange:

    Si la aplicación almacena en caché los colores recuperados del tema o aplica los colores de forma no estándar, agregue un controlador de mensajes para WM_THEMECHANGE que recalcule los valores de color almacenados y vuelva a pintar la interfaz de usuario.

  • Escritura de una aplicación WWA de contraste alto:

    Las aplicaciones web no tienen acceso a las API de UxTheme, pero deben escribirse con las métricas del sistema actuales como base para la interfaz de usuario. Hay algunos recursos para que los desarrolladores de WWA aprovechen para garantizar una aplicación compatible con contraste alto:

    • La especificación color CSS de W3C especifica la sintaxis para usar métricas del sistema en lugar de colores específicos
    • Se agrega compatibilidad con consultas multimedia de contraste alto a Internet Explorer 10
    • Los WWA pueden aprovechar el método IAccessibilityCapabilities::get_HighContrast() para comprobar el estado de contraste alto.

    Las aplicaciones de la Tienda Windows no tienen muchos de los mismos problemas con los elementos de tema que están presentes en las aplicaciones clásicas de Windows, pero aún tienes que garantizar el cumplimiento de contraste alto. De forma predeterminada, Internet Explorer omite determinados estilos definidos por el usuario y los reemplaza por valores compatibles con contraste alto. Por ejemplo, se omiten las propiedades CSS de fondo, fondo y color.

    Si no quieres que Internet Explorer omita las propiedades establecidas y has asegurado de que la interfaz de usuario es compatible con contraste alto, puedes establecer la nueva propiedad CSS M3 –ms-high-contrast: off en un elemento primario.

  • Escritura de una aplicación de la Tienda Windows de contraste alto:

    La aplicación de la Tienda Windows debe usar la clase SystemColors para determinar el color adecuado del elemento de la interfaz de usuario, teniendo en cuenta que determinados colores de métricas del sistema están diseñados para usarse conjuntamente, como SystemColors.WindowColor y SystemColors.WindowTextColor. Esto facilita una experiencia de contraste alto superior.

  • Detección correcta del contraste alto en versiones anteriores de Windows:

    Las aplicaciones que se ejecutan en versiones anteriores de Windows no tienen acceso a los nuevos temas de contraste alto aunque el manifiesto especifique compatibilidad con la versión de Windows en cuestión. Por lo tanto, podría ser necesario insertar rutas de acceso de código adicionales para controlar la representación en el entorno clásico usado en versiones anteriores de Windows. La presencia de contraste alto en este caso debe comprobarse llamando a la función SystemParametersInfo con la marca SPI_GETHIGHCONTRAST. Esta es la única manera admitida de comprobar la presencia de contraste alto.

Pruebas

Al probar una aplicación, asegúrate de que se representa correctamente en todos los temas de la caja proporcionados por Windows 8: Aero, Basic, High Contrast 1, High Contrast 2, High Contrast Black y High Contrast White. Asegúrese de que el texto es claramente visible y fácil de leer en los temas de contraste alto.

Recursos