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
Utilizzare Hybrid Cache in .NET 9
Gestione dell'annidamento delle regole dei layer in CSS
Abilitare automaticamente il force push di un gruppo su Azure DevOps
Generare un hash con SHA-3 in .NET
Sfruttare GPT-4o realtime su Azure Open AI per conversazioni vocali
Triggerare una pipeline su un altro repository di Azure DevOps
Usare i servizi di Azure OpenAI e ChatGPT in ASP.NET Core con Semantic Kernel
Generare una User Delegation SAS in .NET per Azure Blob Storage
Gestione CSS in Blazor con .NET 9
Gestire il routing HTTP in Azure Container App
Ottimizzare le performance usando Span<T> e il metodo Split
Utilizzare Locust con Azure Load Testing