Mode contraste élevé

Plateformes

Clients - serveurs Windows 8 - Windows Server 2012

Description

Dans les systèmes d’exploitation Windows précédents, le mode contraste élevé était limité aux thèmes exécutés sous des thèmes classiques, qui n’étaient pas visuellement styletés. Dans Windows 8 et Windows Server 2012, le mode classique a été supprimé et remplacé par des thèmes de contraste élevé de style visuel. L’un des principaux avantages de cette modification est la suppression d’un chemin de code distinct pour les applications s’exécutant en mode classique.

Les développeurs doivent toujours être informés de la façon dont le mode à contraste élevé peut affecter leur application et comment développer une application qui est vraiment de style-agnostique. Cela est important, car si l’utilisation incorrecte ou l’hypothèse des couleurs de thème peut entraîner le comportement correct des applications sous un style visuel tel que Aero, ces mêmes applications répondent incorrectement sous un contraste élevé. Par exemple, dans Aero, le texte est toujours noir et la couleur de surbrillance est un bleu clair. En noir à contraste élevé, toutefois, la couleur de surbrillance est noire. Si vous supposez que le texte noir, tel qu’il a été le cas dans de nombreuses applications dans la zone antérieures à Windows 8, et utilisez la valeur par défaut du système pour la mise en surbrillance, l’utilisateur voit du texte noir sur un arrière-plan noir. Dans ces situations, il est nécessaire de comprendre comment utiliser des thèmes et des métriques système correctement afin que l’application soit correcte entre les styles.

Manifestations

  • Le thème n’est pas activé dans la zone cliente des applications qui ne contiennent pas de balise Windows 8 <prise en chargeOS> dans leur manifeste d’application. Par conséquent, les applications doivent afficher la zone cliente à l’aide du chemin d’accès du code requis pour le rendu en mode contraste élevé du thème classique.
  • Le thème de thème n’est pas activé dans les domaines non clients et clients des applications dans des thèmes à contraste élevé. Il n’est pas également activé dans les applications qui ne contiennent pas d’étiquette Windows 8 <pris en chargeOS> dans leur manifeste d’application et qui dessinent dans la zone non cliente d’une fenêtre à l’aide de l’API DwnIsCompositionEnabled(). L’ensemble de l’application s’affiche en mode contraste élevé du thème classique.
  • Les applications qui ajoutent la prise en charge d’Windows 8 dans leur manifeste, mais n’utilisent pas de styles visuels pour le rendu, autrement dit, elles codent en dur des couleurs ou des images dans leurs applications, peuvent ne pas s’afficher correctement dans des thèmes à contraste élevé. Le texte peut être difficile à lire ou à afficher des images, car ils doivent être en mode contraste élevé.

Limitation des risques

Les couleurs du texte dans les thèmes à contraste élevé ont été créées pour être conformes aux directives d’accessibilité Microsoft. Nous maintenons un rapport de contraste élevé de 14:1 entre le premier plan et l’arrière-plan. Si les couleurs activées par défaut ne conviennent pas à un utilisateur final particulier, elles peuvent facilement être personnalisées via les paramètres du panneau de configuration pour « Couleur de fenêtre » dans ces thèmes à contraste élevé.

Ces composants d’interface utilisateur sont personnalisables dans des thèmes à contraste élevé :

  • Couleur d’arrière-plan de la fenêtre
  • Couleur du texte
  • Couleur des liens hypertexte
  • Texte désactivé
  • Couleurs du premier plan et de l’arrière-plan du texte sélectionnés
  • Titre de la fenêtre active au premier plan et couleurs d’arrière-plan
  • Titre de la fenêtre inactive au premier plan et couleurs d’arrière-plan
  • Couleurs de premier plan et d’arrière-plan du bouton

Solution

Si un comportement inattendu est observé dans les applications dans des thèmes à contraste élevé, l’une de ces solutions peut aider :

  • Manifeste d’une application pour Windows 8 :

    Les applications qui ne contiennent pas la balise Windows 8 <pris en chargeOS> dans le manifeste de l’application auront leurs zones clientes affichées sans thème. Les applications dans la zone doivent toutes contenir cette entrée dans le manifeste de l’application. Ajoutez la valeur GUID 4a2f28e3-53b9-4441-ba9c-d69d4a4a4a6e38 pour Windows 8.

  • Utilisation de styles visuels avec des interfaces utilisateur dessinées par le propriétaire :

    Les contrôles dessinés par le propriétaire doivent suivre les instructions sur MSDN pour rendre correctement les parties et états de contrôle, y compris le texte. Les développeurs ne doivent pas s’appuyer sur la couleur de texte ou d’arrière-plan spécifiée dans un contexte d’appareil afin d’utiliser des méthodes non-UxTheme pour le rendu. Dans le cas où il n’existe aucune partie de thème pour le contrôle en question, utilisez GetThemeSysColor avec la métrique appropriée et dessinez le texte à l’aide de méthodes GDI standard. Si aucun des appels UxTheme n’est approprié, utilisez la méthode GetSysColor pour obtenir la métrique appropriée.

  • Sélection de la couleur du texte :

    N’utilisez pas de couleur de texte codée en dur, même s’il est supposé être correct dans tous les scénarios courants. Les thèmes d’expédition sont créés de manière à prendre en charge une visibilité élevée avec les métriques associées. Par exemple, COLOR_HIGHLIGHTTEXT est destiné à être utilisé avec COLOR_HIGHLIGHT comme arrière-plan et COLOR_WINDOWTEXT est destiné à être utilisé avec COLOR_WINDOW comme arrière-plan. S’il existe des exceptions à ces associations, utilisez-les dans les parties de thème et les définitions d’état elles-mêmes et non dans le code. Lors de la conception d’UIs à contraste élevé, il est essentiel que l’interface utilisateur soit agnostique au thème actuellement appliqué à contraste élevé, car les utilisateurs à contraste élevé peuvent personnaliser leurs couleurs.

  • Réponse à l’événement WM_ThemeChange :

    Si votre application met en cache les couleurs récupérées à partir du thème ou applique des couleurs de manière non standard, ajoutez un gestionnaire de messages pour WM_THEMECHANGE qui recalcule les valeurs de couleur stockées et repaint l’interface utilisateur.

  • Écriture d’une application WWA à contraste élevé :

    Les applications web n’ont pas accès aux API UxTheme, mais doivent toujours être écrites avec les métriques système actuelles comme base de l’interface utilisateur. Il existe quelques ressources pour les développeurs WWA à tirer parti pour garantir une application conforme à contraste élevé :

    • La spécification de couleur CSS W3C spécifie la syntaxe d’utilisation des métriques système au lieu de couleurs spécifiques
    • La prise en charge des requêtes multimédias à contraste élevé est ajoutée à Internet Explorer 10
    • Les WWA peuvent tirer parti de la méthode IAccessibilityCapabilities::get_HighContrast() pour vérifier l’état du contraste élevé

    Les applications du Windows Store n’ont pas beaucoup de problèmes liés aux composants de thème présents dans les applications Windows classiques, mais vous devez toujours garantir la conformité à contraste élevé. Par défaut, Internet Explorer ignore certains styles définis par l’utilisateur et les remplace par des valeurs conformes à contraste élevé. Par exemple, les propriétés CSS d’arrière-plan, d’arrière-plan et de couleur sont ignorées.

    Si vous ne souhaitez pas qu’Internet Explorer ignore les propriétés que vous définissez et que vous avez fait en sorte que l’interface utilisateur soit conforme à un contraste élevé, vous pouvez définir la nouvelle propriété CSS M3 –ms-high-contraste : désactivée sur un élément parent.

  • Écriture d’une application Windows Store à contraste élevé :

    L’application Du Windows Store doit utiliser la classe SystemColors pour déterminer la couleur appropriée des éléments d’interface utilisateur, en gardant à l’esprit que certaines couleurs de métrique système sont conçues conjointement, telles que SystemColors.WindowColor et SystemColors.WindowTextColor. Cela facilite une expérience supérieure à contraste élevé.

  • Détection correcte du contraste élevé dans les versions précédentes de Windows :

    Les applications s’exécutant sur les versions précédentes de Windows n’ont pas accès aux nouveaux thèmes à contraste élevé même si le manifeste spécifie la compatibilité avec la version de Windows en question. Par conséquent, il peut être nécessaire d’insérer des chemins de code supplémentaires pour gérer le rendu dans l’environnement classique utilisé dans les versions précédentes de Windows. La présence d’un contraste élevé dans ce cas doit être vérifiée en appelant la fonction SystemParametersInfo avec l’indicateur SPI_GETHIGHCONTRAST. Il s’agit du seul moyen pris en charge de vérifier la présence d’un contraste élevé.

Tests

Lors du test d’une application, assurez-vous qu’elle s’affiche correctement dans tous les thèmes dans la zone fournis par Windows 8 : Aero, Basic, High Contrast 1, High Contrast 2, High Contrast Black et High Contrast White. Assurez-vous que le texte est clairement visible et facile à lire dans les thèmes à contraste élevé.

Ressources