Windows 8 si apre ad una varietà di device come tablet, PC e TV, con dimensioni e risoluzioni dello schermo molto diverse tra loro.
Mentre questa varietà non è un problema per immagini vettoriali o elementi XAML, che si possono adattare dinamicamente senza perdita di qualità, nel caso di immagini BMP queste hanno dimensioni ben precise e lasciare che vengano adattate automaticamente può generare artefatti inattesi o scarsa visibilità.
Poichè in Windows 8 è stata fatta grande cura all'usabilità complessiva, questo scenario è stato gestito nativamente in WinRT il quale, a fronte di una immagine, cerca autonomamente la presenza di un file corrispondente ai DPI del sistema operativo, per mostrarla in alternativa all'immagine di base, solitamente a 96dpi.
Per sfruttare questa funzionalità dobbiamo rispettare una serie di convenzioni dei nomi dei file.
Le proporzioni di riferimento sono quattro: 80, 100, 140 e 180.
- 100: corrisponde alle risoluzioni di base (normal DPI) come 1024x768px e 1366x768px;
- 140: risoluzioni HD 1920x1080px;
- 180: oltre HD, come 2560x1440px;
- 80: solo per logo, wideLogo e smallLogo;
A ciascuna proporzione corrisponde un suffisso scale-* da aggiungere al nome del file; prendiamo ad esempio winrtitalia.png, per ognuna di esse dovremo creare i seguenti file di immagine:
- winrtitalia.scale-100.png;
- winrtitalia.scale-140.png
- winrtitalia.scale-180.png
- winrtitalia.scale-80.png (ma solo in caso sia uno dei tre logo per l'app)
Dobbiamo considerare le immagini 140, 180 e 80 come le dimensioni in percentuali dell'immagine 100, quindi se tale immagine di base fosse 100x100px la relativa 180 sarà di 180x180px.
Comunque, sia nel codice che nel markup, dobbiamo sempre riferirci a winrtitalia.png con le modalità di cui abbiamo parlato nello script #6, l'accesso al file specifico avviene in modo trasparente.
Per migliorare la qualità complessiva delle immagini è consigliato che queste abbiano dimensioni in multiplio di 5 pixel.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Generare velocemente pagine CRUD in Blazor con QuickGrid
Creare alias per tipi generici e tuple in C#
Escludere alcuni file da GitHub Secret Scanning
Utilizzare Azure Cosmos DB con i vettori
Aggiornare a .NET 9 su Azure App Service
C# 12: Cosa c'è di nuovo e interessante
Testare l'invio dei messaggi con Event Hubs Data Explorer
Come EF 8 ha ottimizzato le query che usano il metodo Contains
Le novità di Angular: i miglioramenti alla CLI
Gestire eccezioni nei plugin di Semantic Kernel in ASP.NET Core Web API
Utilizzare EF.Constant per evitare la parametrizzazione di query SQL
Gestione degli stili CSS con le regole @layer