【问题标题】:How can I get a screen resolution of Device (Windows Phone)如何获得设备的屏幕分辨率(Windows Phone)
【发布时间】:2012-03-24 14:13:01
【问题描述】:

如何从设置中获取设备的屏幕分辨率(Windows Phone)?

【问题讨论】:

  • 你需要它做什么?分辨率是一样的。
  • 现在是,但是下次系统更新后会有更多可能的解决方案,所以这可能是这类问题的一个很好的理由。

标签: c# silverlight windows-phone-7 silverlight-4.0 silverlight-3.0


【解决方案1】:
public void GetScreenResolution()  
{  
     string ScreenWidth = Application.Current.Host.Content.ActualWidth.ToString();  
     string ScreenHeight = Application.Current.Host.Content.ActualHeight.ToString();  
     MessageBox.Show(ScreenWidth + "*" + ScreenHeight);  
}  

【讨论】:

  • 它当然可以(对我的 DeviceInfo 应用程序执行相同的操作),但不要忘记,如果使用 SDK 7.1(支持 7.x 设备),在运行时会导致错误的值WP8。
  • 在我的带有 WP8.1 的 Lumia 925 上,它返回 480x800,而那里的规格网站声称分辨率是 768x1280。这里有点不对劲。
【解决方案2】:

这可能是了解您的应用在什么屏幕分辨率上运行的更好方法。

if(App.Current.Host.Content.ScaleFactor == 100)
{
  // WVGA
}
else if (App.Current.Host.Content.ScaleFactor == 160)
{
  // WXGA
}
else if (App.Current.Host.Content.ScaleFactor == 150)
{
  // 720p
}

来源http://msdn.microsoft.com/en-us/library/windowsphone/develop/jj206974%28v=vs.105%29.aspx

【讨论】:

  • 如果 MS 为 FullHD 添加另一个比例因子会怎样?对硬代码投反对票
  • 这直接来自上面链接的微软网站。当然,如果添加了新的分辨率/比例因子,那么您在上面的代码中添加另一个条件。你觉得有办法吗?不要无缘无故地投反对票。
  • 我想看看你的解决方案
【解决方案3】:

【讨论】:

  • 看起来没问题,但是,正如stackoverflow.com/a/14018398/1130789 中所述,当微软添加另一个显示分辨率时它会失败!特别是因为如果没有比例因子匹配,则没有异常处理。所以至少在你的切换条件中添加一个默认部分。
【解决方案4】:

这实际上需要@Dmitriy Reznik 和@Paras Wadehra 的答案的组合,因为Host.Content 暴露的尺寸是未缩放的 尺寸。

var content = App.Current.Host.Content;

var screenResolution = new Size(
    content.ActualWidth*content.ScaleFactor/100,
    content.ActualHeight*content.ScaleFactor/100);

【讨论】:

  • 另一种了解显示比例的方法是:DisplayProperties.LogicalDpi / 96.0f
猜你喜欢
  • 1970-01-01
  • 2014-07-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-05
  • 1970-01-01
相关资源
最近更新 更多