在 Windows Phone 8.1 XAML 中获取设备屏幕分辨率
Posted
技术标签:
【中文标题】在 Windows Phone 8.1 XAML 中获取设备屏幕分辨率【英文标题】:Get device screen resolution in Windows Phone 8.1 XAML 【发布时间】:2014-07-31 07:44:58 【问题描述】:在 Windows Phone 8 中,我可以使用 DeviceExtendedProperties
或 Application.Current.Host.Content.ScaleFactor
获得屏幕分辨率。这些都不适用于 Windows Phone 8.1 XAML。
我找不到如何在 Windows Phone 8.1 XAML 中获取屏幕分辨率的方法,有什么方法吗?
【问题讨论】:
【参考方案1】:使用 WinRT API 时,您可以使用 Windows.UI.Xaml.Window.Current.Bounds
(高度和宽度)检索屏幕分辨率。
您需要将这些值乘以比例因子才能获得真正的分辨率。您可以通过调用DisplayInformation.GetForCurrentView().RawPixelsPerViewPixel
来检索比例因子
var scaleFactor = DisplayInformation.GetForCurrentView().RawPixelsPerViewPixel;
Debug.WriteLine("The current resolution is 0x1", Window.Current.Bounds.Width * scaleFactor, Window.Current.Bounds.Height * scaleFactor);
【讨论】:
5.5" 和 6" 模拟器的宽度都是 1080p,但是当我运行我的应用程序时,5.5" 设备呈现不同。在真实设备上也一样吗? @garenyondem 很可能是因为它们具有不同的RawPixelsPerViewPixel
因子,它定义了以视图像素为单位测量的“软分辨率”(在混合“有效设备分辨率”中命名)。取决于RawPixelsPerViewPixel
的值,这很可能。在您的情况下为 220 或 240,您将获得不同的“软分辨率”:490x872 或 450x800,因此如果您将元素定位在离右边缘 50 像素的位置,它会出现在不同模拟器中相对于中心的不同位置,尽管分辨率是一样的。
此外,ScaleFactor
的概念似乎在 WP8.1 中发生了变化,并已被 RawPixelsPerViewPixel
概念“取代”(有点)......这将是有道理的,除非这个奇怪的事实有时对于相同的屏幕分辨率,RPPVP
可以像我上面描述的那样不同..
获得实际分辨率真的很棒。谢谢,您能否提供一些代码如何以英寸为单位获取屏幕尺寸,即 4"、4.5"、5" 或 6" ...如何获取此值。请【参考方案2】:
您可以使用Window 和DisplayInformation 获得有关分辨率的所有信息
var bounds = Window.Current.Bounds;
var displayInfo = DisplayInformation.GetForCurrentView();
【讨论】:
bounds 返回一些奇怪的值,正如我在上一个答案的评论中提到的那样。 displayInfo 有一个有趣的缩放因子属性,但 WVGA 为 140,WXGA 为 180,与 WP8 相比似乎不太合适 @IgorKulman 抱歉,我也应该提到如何计算它,而不仅仅是从哪里获得所需的信息。无论如何,我看到 KooKiz 已经做到了。 :)以上是关于在 Windows Phone 8.1 XAML 中获取设备屏幕分辨率的主要内容,如果未能解决你的问题,请参考以下文章
在 Windows Phone 8.1 XAML 中检测停用和应用关闭
如何在 Windows Phone 8.1 XAML (RT) 应用程序中显示 admob 广告?
为 Windows Phone 8.1 XAML 应用程序显示的奇怪版本