2010-04-08 76 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!

相关问题