Vuoi collaborare in una delle nostre sezioni: Blog, Forum, Segnalazione ROM, Sfondi? Contattaci!

MyLostBlog

15 luglio 2008
Loading A 6 persone piace.
  • Google Bookmarks
  • Facebook
  • Digg
  • del.icio.us
  • Reddit
  • StumbleUpon
  • Technorati
  • Twitthis
  • LinkedIn
  • MySpace
  • Yahoo! Bookmarks

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

}

Altri articoli che ti potrebbero interessare:



Trackbacks

Lascia un commento

Per domande e assistenza prova anche il nostro nuovo Forum!





Traduci

Italiano flagInglese flagFrancese flagTedesco flagGiapponese flagCoreano flagPortoghese flagSpagnolo flag

Ricerca


MyLostBlog Network

922 Lettori via Feed
Iscriviti anche tu: via Reader - via Mail
Seguici anche su Facebook
http://www.facebook.com/mylostblog
Seguici anche su Twitter
http://twitter.com/MyLostBlog

Ultime ROM

Kimera 3.2
    HTC Touch Diamond - by Shark147

EnergyROM Leo 21864 (9 Nov)
    Sony Ericsson Experia X1 - by NRGZ28

Grid LEO 2.1
    HTC Touch HD - by Xannytech

Grid LEO 2.1 (With HTC Messaging)
    HTC Touch HD - by Xannytech

PhoenixEX 1.1
    HTC Touch HD - by LucaP



Vai alla raccolta completa

Ultimi Sfondi




Vai alla raccolta completa











Il Bloggatore









MyLostBlog Blog 2.0
Tema MyLostBlog v3
Powered by Wordpress