Modalità a contrasto elevato
Piattaforme
Client - Windows 8
Server - Windows Server 2012
Descrizione
Nei sistemi operativi Windows precedenti, la modalità a contrasto elevato era limitata ai temi in esecuzione in temi classici, che non erano in stile visivo. In Windows 8 e Windows Server 2012, la modalità classica è stata rimossa e sostituita con temi a contrasto elevato in stile visivo. Uno dei vantaggi principali di questa modifica è la rimozione di un percorso di codice separato per le app in esecuzione in modalità classica.
Gli sviluppatori devono comunque essere istruiti in quanto la modalità a contrasto elevato può influire sulla loro app e su come sviluppare un'app che è veramente in stile-agnostico. Questo è importante perché, mentre l'uso o il presupposto errato dei colori del tema può causare il comportamento corretto delle app in uno stile visivo come Aero, queste stesse app rispondono in modo errato in contrasto elevato. Ad esempio, in Aero, il testo è sempre nero e il colore di evidenziazione è un blu chiaro. In nero a contrasto elevato, tuttavia, il colore di evidenziazione è nero. Se si presuppone testo nero, come è stato il caso in molte app in casella prima di Windows 8 e usare il sistema predefinito per l'evidenziazione, l'utente visualizzerà il testo nero in uno sfondo nero. In queste situazioni è necessario comprendere come usare correttamente i temi e le metriche di sistema, in modo che l'app sia corretta tra gli stili.
Manifestazioni
- L'attivazione di lizioni non è abilitata nell'area client delle app che non contengono un tag Windows 8 <supportatoOS> nel manifesto dell'app. Pertanto, le app devono eseguire il rendering dell'area client usando il percorso del codice necessario per eseguire il rendering in modalità a contrasto elevato del tema classico.
- I temi a contrasto elevato non sono abilitati sia nelle aree client che nei temi a contrasto elevato. Non è abilitata anche nelle app che non contengono un tag Windows 8 <supportatoOS> nel manifesto dell'app e che disegna nell'area non client di una finestra usando l'API DwnIsCompositionEnabled(). L'intera app esegue il rendering nella modalità a contrasto elevato del tema classico.
- Le app che aggiungono il supporto per Windows 8 nel manifesto, ma non usano stili di visualizzazione per il rendering, ovvero i colori o le immagini hardcode nelle app, potrebbero non eseguire correttamente il rendering in temi a contrasto elevato. Il testo potrebbe essere difficile da leggere o immagini potrebbe non essere visualizzato in modalità a contrasto elevato.
Strategia di riduzione del rischio
I colori di testo nei temi a contrasto elevato sono stati creati per essere conformi alle linee guida per l'accessibilità Microsoft. Viene mantenuto un rapporto a contrasto elevato 14:1 tra primo piano e sfondo. Se i colori abilitati per impostazione predefinita non sono adatti a un determinato utente finale, possono essere facilmente personalizzati tramite le impostazioni del pannello di controllo per "Colore finestra" in tali temi a contrasto elevato.
Questi componenti dell'interfaccia utente sono personalizzabili in temi a contrasto elevato:
- Colore di sfondo finestra
- Colore del testo
- Colore collegamenti ipertestuali
- Testo disabilitato
- Testo selezionato in primo piano e colori di sfondo
- Titolo finestra attiva in primo piano e colori di sfondo
- Titolo finestra inattivo in primo piano e colori di sfondo
- Colori di primo piano e sfondo del pulsante
Soluzione
Se il comportamento imprevisto viene visualizzato nelle app in temi a contrasto elevato, una di queste soluzioni potrebbe essere utile:
Manifesto di un'app per Windows 8:
Le app che non contengono il tag Windows 8 <supportatoOS> nel manifesto dell'app avranno il rendering delle aree client senza un tema. Le app nella casella devono contenere tutte questa voce nel manifesto dell'app. Aggiungere il valore GUID 4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38 GUID per Windows 8.
Uso di stili di visualizzazione con le interfacce utente disegnate dal proprietario:
I controlli di disegno del proprietario devono seguire le istruzioni su MSDN per il rendering corretto delle parti di controllo e degli stati, incluso il testo. Gli sviluppatori non devono basarsi sul testo o sul colore di sfondo specificato in un contesto del dispositivo per usare metodi non UxTheme per il rendering. Nel caso in cui non esista alcuna parte del tema per il controllo in questione, usare GetThemeSysColor con la metrica appropriata e disegnare il testo usando metodi GDI standard. Se nessuna delle chiamate UxTheme è appropriata, usare il metodo GetSysColor per ottenere la metrica appropriata.
Selezione del colore di testo:
Non usare un colore di testo hardcoded, anche se si presuppone che sia corretto in tutti gli scenari comuni. I temi di spedizione vengono creati in modo da supportare la visibilità elevata con le metriche associate. Ad esempio, COLOR_HIGHLIGHTTEXT deve essere usato con COLOR_HIGHLIGHT come sfondo e COLOR_WINDOWTEXT deve essere usato con COLOR_WINDOW come sfondo. Se sono presenti eccezioni a queste associazioni, usarle nelle parti del tema e nelle definizioni di stato stesse e non nel codice. Quando si progettano UI a contrasto elevato, è fondamentale che l'interfaccia utente sia agnostica al tema a contrasto elevato attualmente applicato, poiché gli utenti a contrasto elevato possono personalizzare i propri colori.
Risposta all'evento WM_ThemeChange:
Se l'app memorizza nella cache i colori recuperati dal tema o applica i colori in modo non standard, aggiungere un gestore messaggi per WM_THEMECHANGE che ricalcola i valori di colore archiviati e riintula l'interfaccia utente.
Scrittura di un'app WWA a contrasto elevato:
Le app Web non hanno accesso alle API UxTheme, ma devono comunque essere scritte con le metriche di sistema correnti come base per l'interfaccia utente. Esistono alcune risorse per gli sviluppatori WWA da sfruttare per garantire un'app conforme a contrasto elevato:
- La specifica colore CSS W3C specifica la sintassi per l'uso delle metriche di sistema anziché colori specifici
- Il supporto per le query multimediali a contrasto elevato viene aggiunto a Internet Explorer 10
- Le WWA possono sfruttare il metodo IAccessibilityCapabilities::get_HighContrast() per controllare lo stato di contrasto elevato
Le app di Windows Store non presentano molti degli stessi problemi con le parti del tema presenti nelle applicazioni windows classiche, ma è comunque necessario garantire la conformità a contrasto elevato. Per impostazione predefinita, Internet Explorer ignora determinati stili definiti dall'utente e li sostituisce con valori conformi a contrasto elevato. Ad esempio, le proprietà CSS di sfondo, sfondo e colore vengono ignorate.
Se non si vuole che Internet Explorer ignori le proprietà impostate e si è verificato che l'interfaccia utente sia conforme a contrasto elevato, è possibile impostare la nuova proprietà CSS M3 -ms-high-contrast: disattivata su un elemento padre.
Scrittura di un'app di Windows Store a contrasto elevato:
L'app di Windows Store deve usare la classe SystemColors per determinare la colorazione appropriata dell'elemento dell'interfaccia utente, tenendo presente che alcuni colori delle metriche di sistema sono progettati per essere usati insieme, ad esempio SystemColors.WindowColor e SystemColors.WindowTextColor. Ciò facilita un'esperienza di contrasto superiore.
Rilevamento corretto del contrasto elevato nelle versioni precedenti di Windows:
Le app in esecuzione nelle versioni precedenti di Windows non hanno accesso ai nuovi temi a contrasto elevato anche se il manifesto specifica la compatibilità con la versione di Windows in questione. Di conseguenza, potrebbe essere necessario inserire percorsi di codice aggiuntivi per gestire il rendering nell'ambiente classico usato nelle versioni precedenti di Windows. La presenza di contrasto elevato in questo caso deve essere controllata chiamando la funzione SystemParametersInfo con il flag di SPI_GETHIGHCONTRAST. Questo è l'unico modo supportato per controllare la presenza di contrasto elevato.
Test
Durante il test di un'app, assicurarsi che venga eseguito correttamente il rendering in tutti i temi in-box forniti da Windows 8: Aero, Basic, High Contrast 1, High Contrast 2, High Contrast Black e High Contrast White. Assicurarsi che il testo sia chiaramente visibile e facile da leggere nei temi a contrasto elevato.
Risorse
- Classi di stile aero, parti e stati (i nuovi temi di base e a contrasto elevato usano anche questi stati)
- Parti e Stati comuni a tutti gli stili visivi
- Uso di stili di visualizzazione con controlli personalizzati e Owner-Drawn
- Funzione GetSysColor
- Livello del modulo di colore CSS W3C
- Classe SystemColors
- Funzione SystemParametersInfo
- Accessibilità Microsoft