2010-04-08 12 views
18

Come posso ottenere la risoluzione dello schermo su WP7? Di seguito sono riportati alcuni collegamenti che eseguono lo stesso lavoro in WPF desktop e Silverlight, ma nessuno di essi si trova nell'SDK del telefono.Come ottenere le dimensioni dello schermo su Windows Phone 7 Series?

Qualche idea?

http://social.msdn.microsoft.com/Forums/en-US/windowsphone7series/thread/f0639904-a368-44db-9ddd-efcaf8fc736e
http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/6b6b832f-0dfd-428c-84cd-b1b9e7f236cf
How can I get the active screen dimensions?
http://social.msdn.microsoft.com/Forums/en-US/windowsphone7series/thread/f0639904-a368-44db-9ddd-efcaf8fc736e

+0

Hai uno di quei telefoni? Wow - Non sapevo che fossero a disposizione di chiunque per sviluppare ancora con loro. –

+0

No, solo l'emulatore :( –

risposta

14

Sembra Application.Current.RootVisual.RenderSize vi darà le informazioni.

+0

Funziona sicuramente, grazie. –

+0

Comodo sapere che anche se ci saranno due risoluzioni per Windows Phone 7 (480 × 800) e (320 × 480) non hanno le stesse proporzioni, che suppongo sia il motivo per cui domanda. – RoguePlanetoid

+7

Per favore vedi la risposta di Luca Puplett qui sotto se stai cercando di farlo. Non è probabile che RootVisual.RenderSize ti dia esattamente ciò che desideri. – jeffa00

1

tutto schermo:

(App.Current.RootVisual as FrameworkElement).ActualHeight 
(App.Current.RootVisual as FrameworkElement).ActualWidth 

Pagina corrente:

Se volete conoscere la dimensione visibile (prendendo AppBar/SystemTray in considerazione), poi basta chiedere per essa fuori dalla pagina, invece.

66

Io uso questo:

this.ScreenWidth = System.Windows.Application.Current.Host.Content.ActualWidth; 
this.ScreenHeight = System.Windows.Application.Current.Host.Content.ActualHeight; 

Molti modi per scuoiare un app. Se è per XAML, è possibile associare le proprietà di LayoutRoot.

Height="{Binding ElementName=LayoutRoot,Path=ActualHeight}" 
+2

Questa è la risposta migliore. Come Quetzlcoatl ha sottolineato, la risposta accettata ha problemi. – jeffa00

+0

Questa risposta è migliore. Usando questo metodo puoi anche ottenere le dimensioni dello schermo nel costruttore. Usando la risposta accettata ho ottenuto un'eccezione di riferimento null. – Daan

+0

E funziona anche su WP8. – KristianB

8

non posso giù/upvote ancora (in realtà, ora posso e ho fatto così), ma vorrei far notare che la risposta "Luca Puplett" s tra cui Application.Current.Host . Il contenuto è quello corretto, non quello di "Andréas Saudemont" che consiglia RenderSize.

Utilizzerò i nomi che vengono comunemente utilizzati nelle esercitazioni o nelle applicazioni di esempio da MSDN.

Dico che Host.Current è più adeguato, perché proprio all'inizio dell'applicazione, in particolare sul WP7 (non so come sia su "regolare" SL3/SL4 su PC) - cioè, per esempio, nel costruttore della prima pagina - la proprietà RenderSize NON è ANCORA impostata correttamente, poiché il "RootVisual" dell'applicazione è in costruzione e non è ancora stato assegnato in "App.xaml.cs". Almeno in quel punto, RenderSize = Size {0,0}

D'altra parte, se solo l'app viene avviata correttamente, Host.Content è impostato su un telefono, che è correttamente a schermo intero e ruotato nella posizione attuale dello schermo. Direi che in fin dall'inizio è la schermata di avvio iniziale (vuoto o statico da file JPG)

4

Se si desidera accedere alla dimensione di visualizzazione all'interno di un gioco di XNA, utilizzare questo:

graphics.GraphicsDevice.DisplayMode.Width 

e

graphics.GraphicsDevice.DisplayMode.Height 

cui grafica è GraphicDeviceManager della partita in corso!

Problemi correlati