Questo post è stato pubblicato 3209 giorni fa.
Le informazioni e i contenuti potrebbero quindi non essere aggiornati.

Share on FacebookShare on Google+Tweet about this on TwitterShare on RedditPrint this pageEmail this to someone

Nuovo appuntamento per la recente sezione .NET Compact Framework School. La piccola guida di oggi verterà su come sviluppare un’applicazione compatibile con tutti i Pocket PC, a prescindere dalla risoluzione. Quando si sviluppa un’applicazione per Windows Mobile è necessario ricordarsi che tale applicazione può girare sui dispositivi più diversi con risoluzioni e orientamenti diversi. In fase di progettazione bisogna quindi aggiungere degli accorgimenti per rendere l’applicazione compatibile con tutti i Device. Oggi vedremo come determinare se un dispositivo è dotato di uno schermo ad Alta Risoluzione (per esempio VGA) o a Bassa Risoluzione (per esempio QVGA). I controlli standard (Bottoni, Caselle di testo, ecc..) si adattano automaticamente a tutte le risoluzioni, ma cosa succede se inseriamo delle immagini nel nostro programma? Windows Mobile le ridimensiona automaticamente, ma durante il ridimensionamento queste perdono di qualità.

E’ consigliabile, quindi, inserire nel proprio progetto, due immagini uguali ma di dimensioni diverse, una per ogni risoluzione. Una volta inserite le diverse immagini adatte alle diverse risoluzioni, è necessario determinare la risoluzione dello schermo. Per fare ciò esistono diversi modi e in questa guida vediamo i tre più utilizzati. Tutti questi metodi si basano sul fatto che i dispositivi ad alta risoluzione hanno 192 DPI, mentre quelli a bassa risoluzione hanno 96 DPI.

Metodo System.Windows.Form

Questo primo metodo riceve i dati da System.Windows.Form, ed è il più semplice da implementare
if (this.CurrentAutoScaleDimensions.Height == 192)
{
// Schermo ad alta risoluzione
}
else
{
// Schermo a bassa risoluzione
}

Metodo Graphics

Il secondo metodo inizializza una nuova istanza della classe System.Windows.Form.Control, successivamente crea l’oggetto System.Drawing.Graphics per il controllo e infine ottiene la risoluzione verticale dell’oggetto.
Control resolution = new Control();
Graphics gr = resolution.CreateGraphics();
if (gr.DpiY == 192)
{
// Schermo ad alta risoluzione
}
else
{
// Schermo a bassa risoluzione
}

Metodo PInvoke

Quest’ultimo metodo può essere usato dove i due metodi precedenti non sono adatti. Ad esempio, è possibile creare un gestore delle risorse che rileva la risoluzione corrente e carica le immagine risorse necessarie.
[DllImport("coredll.dll")]
static extern int GetDeviceCaps(IntPtr hdc, int nIndex);
int dpi = GetDeviceCaps(IntPtr.Zero, 88);
if (dpi == 192)
{
// Schermo ad alta risoluzione
}
else
{
// Schermo a bassa risoluzione
}

Share on FacebookShare on Google+Tweet about this on TwitterShare on RedditPrint this pageEmail this to someone

Ancora nessun commento

Partecipa anche tu alla discussione e lascia il tuo commento

Lascia il tuo commento