Condividi tramite


Modalità a contrasto elevato

Piattaforme

Client - server Windows 8 - Windows Server 2012

Descrizione

Nei sistemi operativi Windows precedenti, la modalità a contrasto elevato era limitata ai temi in esecuzione con i temi classici, che non erano con stile visivo. In Windows 8 e Windows Server 2012, la modalità classica è stata rimossa e sostituita con temi a contrasto elevato con stile visivo. Uno dei principali vantaggi 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 propria app e su come sviluppare un'app che sia veramente indipendente dallo stile. Questo è importante perché, mentre l'uso errato o il presupposto dei colori del tema può causare un comportamento corretto delle app con uno stile di visualizzazione come Aero, le stesse app rispondono erroneamente a contrasto elevato. Ad esempio, in Aero, il testo è sempre nero e il colore di evidenziazione è 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-box prima di Windows 8 e usare l'impostazione predefinita di sistema per l'evidenziazione, l'utente visualizzerà il testo nero su uno sfondo nero. In queste situazioni è necessario comprendere come usare correttamente i temi e le metriche di sistema in modo che l'app abbia un aspetto corretto tra gli stili.

Manifestazioni

  • Il tema non è abilitato 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 il rendering in modalità a contrasto elevato del tema classico.
  • Il tema non è abilitato nelle aree non client e client delle app in temi a contrasto elevato. Non è abilitata anche nelle app che non contengono un tag supportatoOS> Windows 8 <nel manifesto dell'app e che disegnano 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 gli stili di visualizzazione per il rendering, ovvero i colori hardcoded o le immagini nelle app, potrebbero non essere visualizzati correttamente nei temi a contrasto elevato. Il testo potrebbe essere difficile da leggere o le immagini potrebbe non essere visualizzato perché dovrebbero essere in modalità a contrasto elevato.

Strategia di riduzione del rischio

I colori del testo nei temi a contrasto elevato sono stati creati per essere conformi alle linee guida per l'accessibilità Microsoft. Microsoft mantiene un rapporto di contrasto elevato di 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 nei temi a contrasto elevato:

  • Colore di sfondo della finestra
  • Colore del testo
  • Colore collegamenti ipertestuali
  • Testo disabilitato
  • Colori di sfondo e primo piano del testo selezionati
  • Colori di primo piano e sfondo del titolo della finestra attiva
  • Titolo della finestra inattiva in primo piano e colori di sfondo
  • Colori di primo piano e sfondo dei pulsanti

Soluzione

Se si verifica un comportamento imprevisto nelle app in temi a contrasto elevato, una di queste soluzioni può essere utile:

  • Manifesto di un'app per Windows 8:

    Le app che non contengono il tag supportatoOS> Windows 8 <nel manifesto dell'app avranno il rendering delle aree client senza un tema. Le app predefinite devono contenere tutte questa voce nel manifesto dell'app. Aggiungere il valore GUID 4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38 per Windows 8.

  • Uso degli stili di visualizzazione con interfacce utente disegnate dal proprietario:

    I controlli creati dal proprietario devono seguire le istruzioni in MSDN per il rendering corretto di parti e stati di controllo, incluso il testo. Gli sviluppatori non devono basarsi sul testo o sul colore di sfondo specificato in un contesto di dispositivo per usare metodi non UxTheme per il rendering. Nel caso in cui non vi sia 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 del testo:

    Non usare un colore di testo hardcoded, anche se si presuppone che abbia un aspetto 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 esistono eccezioni a queste associazioni, usarle nelle parti del tema e nelle definizioni di stato stesse e non nel codice. Quando si progettano interfacce utente a contrasto elevato, è fondamentale che l'interfaccia utente sia indipendente dal tema a contrasto elevato attualmente applicato, in quanto gli utenti a contrasto elevato possono personalizzare i 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 di messaggi per WM_THEMECHANGE che ricalcola i valori di colore archiviati e aggiorna 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. Per gli sviluppatori WWA sono disponibili alcune risorse da sfruttare per garantire un'app conforme a contrasto elevato:

    • La specifica W3C CSS Color specifica la sintassi per l'uso delle metriche di sistema invece di colori specifici
    • Il supporto per le query multimediali a contrasto elevato viene aggiunto a Internet Explorer 10
    • Le applicazioni wwa possono sfruttare il metodo IAccessibilityCapabilities::get_HighContrast() per controllare lo stato del contrasto elevato

    Le app di Windows Store non presentano molti degli stessi problemi con le parti del tema presenti nelle applicazioni di 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 vuoi che Internet Explorer ignori le proprietà impostate e hai verificato che l'interfaccia utente sia conforme a contrasto elevato, puoi impostare la nuova proprietà CSS M3 -ms-high contrast: off 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 corretta degli elementi 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 elevato 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 verificata chiamando la funzione SystemParametersInfo con il flag SPI_GETHIGHCONTRAST. Questo è l'unico modo supportato di 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