2010-04-08 66 views
18

如何以編程方式獲得WP7上的屏幕分辨率?以下是一些鏈接,可以在桌面WPF和Silverlight中完成相同的工作,但它們都不在Phone SDK中。如何在Windows Phone 7系列上獲取屏幕大小?

任何想法?

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

你有這些手機之一?哇 - 我不知道他們可以讓任何人與他們一起開發。 – 2010-04-08 00:11:36

+0

不,只是模擬器:( – 2010-04-08 00:34:51

回答

14

看起來Application.Current.RootVisual.RenderSize會給你的信息。

+0

這當然有用,謝謝。 – 2010-04-08 21:04:42

+0

方便地知道,即使Windows Phone 7(480×800)和(320×480)的分辨率有兩種分辨率,但他們的縱橫比並不完全相同,我猜測這是其原因題。 – RoguePlanetoid 2010-04-16 10:27:47

+7

如果您正在嘗試這樣做,請參閱下面的Luke Puplett的回答。 RootVisual.RenderSize不可能完全給你想要的東西。 – jeffa00 2011-04-27 14:13:00

1

整個屏幕:

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

當前頁:

如果你想知道可見大小(以AppBar/SystemTray的考慮),那麼只要求它關閉的頁面來代替。

66

我用這個:

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

的方法很多皮膚上的應用程序。如果它適用於XAML,則可以綁定到LayoutRoot的屬性。

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

這是更好的答案。正如Quetzlcoatl指出,接受的答案有問題。 – jeffa00 2011-04-27 14:11:22

+0

這個答案比較好。使用此方法,您還可以在構造函數中獲取屏幕尺寸。使用接受的答案,我得到了一個空引用異常。 – Daan 2012-04-07 12:26:26

+0

它也適用於WP8。 – KristianB 2013-01-10 13:18:36

8

我不能下來/給予好評尚未 (實際上,現在我可以和我這樣做),但我想指出的是,「盧克Puplett」的答案,包括Application.Current.Host內容是正確的,而不是「AndréasSaudemont的建議RenderSize的一個。

我會用常用於從MSDN教程或示例應用程序使用的名稱。

我說Host.Current更適合,因爲在應用程序的開始,尤其是WP7上(我不知道它是如何在PC上的「普通」SL3/SL4上) - 也就是說,例如,在第一頁的構造函數中 - 因爲應用程序的「RootVisual」正在構建中,並且尚未在「App.xaml.cs」中分配,所以RenderSize屬性未正確設置。至少在這一點上,RenderSize = Size {0,0}

另一方面,如果只有應用程序正確啓動,則Host.Content被設置爲某個phoneframe,它正確地爲全屏尺寸並旋轉到實際的屏幕位置。我猜想,在一開始就開始閃屏(從JPG文件空或靜態)

4

如果你想從XNA遊戲內訪問顯示大小,使用這樣的:

graphics.GraphicsDevice.DisplayMode.Width 

graphics.GraphicsDevice.DisplayMode.Height 

其中graphics是當前遊戲的GraphicDeviceManager!

相關問題