Direct2D e DPI elevato
La scrittura di un'applicazione compatibile con DPI è la chiave per rendere coerente l'aspetto di un'interfaccia utente in un'ampia gamma di impostazioni di visualizzazione DPI elevate. Un'applicazione che non riconosce dpi, ma è in esecuzione in un'impostazione di visualizzazione con valori DPI elevati può risentire di molti artefatti visivi, tra cui il ridimensionamento non corretto degli elementi dell'interfaccia utente, il testo ritagliato e le immagini sfocate. Aggiungendo il supporto nell'applicazione per la consapevolezza dei valori DPI, la presentazione dell'interfaccia utente dell'applicazione è più prevedibile, rendendola più visivamente accattivante e più facile da leggere per gli utenti. Fortunatamente, Direct2D semplifica la scrittura di applicazioni che funzionano bene in valori DPI elevati. In questo argomento sono contenute le sezioni seguenti.
- Supporto di valori DPI elevati in Direct2D
- Windows 8 e DPI elevato
- Che cos'è un DIP?
- Argomenti correlati
Supporto di valori DPI elevati in Direct2D
Direct2D offre le funzionalità seguenti per l'uso di scenari con valori DPI elevati:
- Rispetta automaticamente il valore DPI di sistema durante la creazione di una destinazione di rendering con finestra, purché il manifesto dell'applicazione indichi che l'applicazione gestisce correttamente i valori DPI. Per informazioni su come dichiarare che l'applicazione è compatibile con DPI, vedere Come assicurarsi che l'applicazione venga visualizzata correttamente nei display con valori DPI alti.
- Esprime le coordinate in DIP (Device Independent Pixel), che consente all'applicazione di ridimensionarsi automaticamente quando cambia l'impostazione DPI.
- Consente alle bitmap di avere un DPI e di ridimensionarle correttamente tenendo conto del dpi. Questa funzionalità può essere usata anche per mantenere le icone a risoluzioni diverse.
- Esprime la maggior parte delle risorse nei DIP, che rende le risorse automaticamente indipendenti dalla risoluzione.
- Usa uno spazio di coordinate a virgola mobile e l'antialiasing, in modo che qualsiasi contenuto possa essere ridimensionato in qualsiasi DPI arbitrario.
La pipeline grafica Direct2D è progettata per la scalabilità da 96 DPI a 1200DPI.
Windows 8 e DPI elevato
A partire da Windows 8, sono disponibili funzionalità aggiuntive per il supporto di valori DPI elevati.
Se il valore DPI del contesto di dispositivo è sufficientemente elevato, Direct2D modifica la soglia usata per abilitare l'anti-aliasing verticale del testo. Ciò comporta un rendering più rapido del testo su schermi CON VALORI DPI elevati. Inoltre, è possibile impostare la modalità unità su pixel anziché su DIP usando il metodo ID2D1DeviceContext::SetUnitMode . Se si imposta la modalità unità su pixel e il valore DPI del contesto di dispositivo sulla dpi dello schermo, l'ottimizzazione è ancora abilitata.
Che cos'è un DIP?
Un pixel indipendente dal dispositivo (DIP) è un pixel logico che esegue il mapping ai pixel del dispositivo fisico tramite un valore DPI scalare. DPI è l'acronimo di punti per pollice, dove un punto rappresenta un pixel di dispositivo fisico. (La tipografia deriva dalla stampa, dove i punti sono il punto inchiostro più piccolo che un processo di stampa può produrre). Poiché un monitor standard usava 96 punti per pollice, un DPI pari a 96 significava che un pixel indipendente (o DIP) del dispositivo mappato 1:1 con un pixel fisico. Ad esempio, se il valore DPI era 96*2 = 192, un singolo DIP includerà due pixel fisici.
Esistono molti motivi per cui le applicazioni non gestiscono necessariamente questa scalabilità correttamente; uno dei motivi più semplici è che richiede lavoro aggiuntivo per individuare e usare questo valore scalare durante il rendering. In Direct2D la scalabilità viene applicata per impostazione predefinita. A causa di questo mapping, i pixel del dispositivo fisico potrebbero finire in coordinate DIP frazionarie, motivo per cui Direct2D usa uno spazio di coordinate a virgola mobile.
- physical pixel = (dip × DPI) / 96
Per convertire un pixel fisico in un DIP, usare questa formula:
- dip = (pixel fisico × 96) / DPI
Nota
A partire da Windows 8, è possibile impostare la modalità unità su pixel anziché su DIP usando il metodo ID2D1DeviceContext::SetUnitMode.
Argomenti correlati
-
Come assicurarsi che l'applicazione venga visualizzata correttamente nei display con valori DPI alti