Mode contraste élevé
Plates-formes
clients - Windows 8
serveurs - 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 à 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 véritablement indépendante du style. 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é, cependant, la couleur de surbrillance est noire. Si vous supposez du texte noir, comme c’est le cas dans de nombreuses applications dans la zone antérieures à Windows 8 et que vous 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 correctement les thèmes et les métriques système 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 <supportedOS> 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 effectuer le rendu en mode contraste élevé du thème classique.
- Le 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 non plus activé dans les applications qui ne contiennent pas de balise Windows 8 <supportedOS> 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 de Windows 8 dans leur manifeste, mais n’utilisent pas de styles visuels pour le rendu, autrement dit, ils codent en dur des couleurs ou des images dans leurs applications, peuvent ne pas s’afficher correctement dans les thèmes à contraste élevé. Le texte peut être difficile à lire ou les images peuvent ne pas apparaître comme elles le devraient en mode contraste élevé.
Atténuation
Les couleurs du texte dans les thèmes à contraste élevé ont été créées pour être conformes aux instructions 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 de premier plan et d’arrière-plan sélectionnées
- Couleurs de premier plan et d’arrière-plan de la fenêtre active
- Couleurs de premier plan et d’arrière-plan de la fenêtre inactive
- 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 vous aider :
Manifeste d’une application pour Windows 8 :
Les applications qui ne contiennent pas l'<Windows 8 <balise supportedOS> dans le manifeste de l’application auront leurs zones clientes affichées sans thème. Les applications entrantes 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 de MSDN pour le rendu correct des 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 mesure 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 de texte :
N’utilisez pas de couleur de texte codée en dur, même si elle est supposée être correcte 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’interfaces utilisateur à contraste élevé, il est essentiel que l’interface utilisateur soit indépendante du thème à contraste élevé actuellement appliqué, 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 les couleurs de manière non standard, ajoutez un gestionnaire de messages pour WM_THEMECHANGE qui recalcule les valeurs de couleur stockées et repeint 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 à contraste élevé, vous pouvez définir la nouvelle propriété CSS M3 –ms-high-contrast : off 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 coloration appropriée des éléments d’interface utilisateur, en gardant à l’esprit que certaines couleurs de métriques 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 exécutées 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 de 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 in-box 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
- les classes de style Aero, les parties et les états (le nouveau thème de base et les thèmes à contraste élevé utilisent également ces états)
- Parties et États communs à tous les styles visuels
- à l’aide de styles visuels avec des contrôles personnalisés et Owner-Drawn
- fonction GetSysColor
- module de couleur CSS W3C niveau 3
- classe SystemColors
- fonction SystemParametersInfo
- d’accessibilité Microsoft