在 Win10 UWP App 中获取屏幕分辨率
Get Screen Resolution in Win10 UWP App
由于 UWP 应用程序在普通桌面系统上以 window 模式运行,因此获取屏幕分辨率的 "old" 方式将不再有效。
Window.Current.Bounds
的旧分辨率就像 shown in.
是否有其他方法可以获取(主)显示器的分辨率?
我找到的唯一方法是在页面的构造函数中:
public MainPage()
{
this.InitializeComponent();
var test = ApplicationView.GetForCurrentView().VisibleBounds;
}
我还没有在 Windows 10 Mobile 中测试过,当新版本出现时我会测试它。
好的,Juan Pablo Garcia Coello 的回答让我找到了解决方案 - 谢谢!
您可以使用
var bounds = ApplicationView.GetForCurrentView().VisibleBounds;
但你必须在 windows 显示在我的例子中
之前调用它
Window.Current.Activate();
是个好地方。此时您将获得 window 的边界,您的应用将出现在该边界上。
非常感谢帮我解决问题:)
问候亚历克斯
为了进一步改进其他答案,以下代码还考虑了比例因子,例如我的 Windows 显示器(正确 returns 3200x1800)的 200% 和 Lumia 930 (1920x1080) 的 300%。
var bounds = ApplicationView.GetForCurrentView().VisibleBounds;
var scaleFactor = DisplayInformation.GetForCurrentView().RawPixelsPerViewPixel;
var size = new Size(bounds.Width*scaleFactor, bounds.Height*scaleFactor);
如其他答案所述,在更改根框架的大小之前,这只是 returns 桌面上的正确大小。
只需为主网格或页面设置名称,并为您想要的元素调用其宽度或高度:
Element.Height = PagePane.Height;
Element.width = PagePane.Width;
这是您可以使用的最简单的方法!
使用此方法获取屏幕尺寸:
public static Size GetScreenResolutionInfo()
{
var applicationView = ApplicationView.GetForCurrentView();
var displayInformation = DisplayInformation.GetForCurrentView();
var bounds = applicationView.VisibleBounds;
var scale = displayInformation.RawPixelsPerViewPixel;
var size = new Size(bounds.Width * scale, bounds.Height * scale);
return size;
}
您应该在 Window.Current.Activate() 之后从 App.xaml.cs 调用此方法;在 OnLaunched 方法中。
这是示例代码,您可以download完整的项目。
随时随地调用此方法(在 mobile/desktop App 中测试):
public static Size GetCurrentDisplaySize() {
var displayInformation = DisplayInformation.GetForCurrentView();
TypeInfo t = typeof(DisplayInformation).GetTypeInfo();
var props = t.DeclaredProperties.Where(x => x.Name.StartsWith("Screen") && x.Name.EndsWith("InRawPixels")).ToArray();
var w = props.Where(x => x.Name.Contains("Width")).First().GetValue(displayInformation);
var h = props.Where(x => x.Name.Contains("Height")).First().GetValue(displayInformation);
var size = new Size(System.Convert.ToDouble(w), System.Convert.ToDouble(h));
switch (displayInformation.CurrentOrientation) {
case DisplayOrientations.Landscape:
case DisplayOrientations.LandscapeFlipped:
size = new Size(Math.Max(size.Width, size.Height), Math.Min(size.Width, size.Height));
break;
case DisplayOrientations.Portrait:
case DisplayOrientations.PortraitFlipped:
size = new Size(Math.Min(size.Width, size.Height), Math.Max(size.Width, size.Height));
break;
}
return size;
}
更简单的方法:
var displayInformation = DisplayInformation.GetForCurrentView();
var screenSize = new Size(displayInformation.ScreenWidthInRawPixels,
displayInformation.ScreenHeightInRawPixels);
这不取决于当前视图大小。任何时候它 returns 实际屏幕分辨率。
由于 UWP 应用程序在普通桌面系统上以 window 模式运行,因此获取屏幕分辨率的 "old" 方式将不再有效。
Window.Current.Bounds
的旧分辨率就像 shown in.
是否有其他方法可以获取(主)显示器的分辨率?
我找到的唯一方法是在页面的构造函数中:
public MainPage()
{
this.InitializeComponent();
var test = ApplicationView.GetForCurrentView().VisibleBounds;
}
我还没有在 Windows 10 Mobile 中测试过,当新版本出现时我会测试它。
好的,Juan Pablo Garcia Coello 的回答让我找到了解决方案 - 谢谢!
您可以使用
var bounds = ApplicationView.GetForCurrentView().VisibleBounds;
但你必须在 windows 显示在我的例子中
之前调用它Window.Current.Activate();
是个好地方。此时您将获得 window 的边界,您的应用将出现在该边界上。
非常感谢帮我解决问题:)
问候亚历克斯
为了进一步改进其他答案,以下代码还考虑了比例因子,例如我的 Windows 显示器(正确 returns 3200x1800)的 200% 和 Lumia 930 (1920x1080) 的 300%。
var bounds = ApplicationView.GetForCurrentView().VisibleBounds;
var scaleFactor = DisplayInformation.GetForCurrentView().RawPixelsPerViewPixel;
var size = new Size(bounds.Width*scaleFactor, bounds.Height*scaleFactor);
如其他答案所述,在更改根框架的大小之前,这只是 returns 桌面上的正确大小。
只需为主网格或页面设置名称,并为您想要的元素调用其宽度或高度:
Element.Height = PagePane.Height;
Element.width = PagePane.Width;
这是您可以使用的最简单的方法!
使用此方法获取屏幕尺寸:
public static Size GetScreenResolutionInfo()
{
var applicationView = ApplicationView.GetForCurrentView();
var displayInformation = DisplayInformation.GetForCurrentView();
var bounds = applicationView.VisibleBounds;
var scale = displayInformation.RawPixelsPerViewPixel;
var size = new Size(bounds.Width * scale, bounds.Height * scale);
return size;
}
您应该在 Window.Current.Activate() 之后从 App.xaml.cs 调用此方法;在 OnLaunched 方法中。
这是示例代码,您可以download完整的项目。
随时随地调用此方法(在 mobile/desktop App 中测试):
public static Size GetCurrentDisplaySize() {
var displayInformation = DisplayInformation.GetForCurrentView();
TypeInfo t = typeof(DisplayInformation).GetTypeInfo();
var props = t.DeclaredProperties.Where(x => x.Name.StartsWith("Screen") && x.Name.EndsWith("InRawPixels")).ToArray();
var w = props.Where(x => x.Name.Contains("Width")).First().GetValue(displayInformation);
var h = props.Where(x => x.Name.Contains("Height")).First().GetValue(displayInformation);
var size = new Size(System.Convert.ToDouble(w), System.Convert.ToDouble(h));
switch (displayInformation.CurrentOrientation) {
case DisplayOrientations.Landscape:
case DisplayOrientations.LandscapeFlipped:
size = new Size(Math.Max(size.Width, size.Height), Math.Min(size.Width, size.Height));
break;
case DisplayOrientations.Portrait:
case DisplayOrientations.PortraitFlipped:
size = new Size(Math.Min(size.Width, size.Height), Math.Max(size.Width, size.Height));
break;
}
return size;
}
更简单的方法:
var displayInformation = DisplayInformation.GetForCurrentView();
var screenSize = new Size(displayInformation.ScreenWidthInRawPixels,
displayInformation.ScreenHeightInRawPixels);
这不取决于当前视图大小。任何时候它 returns 实际屏幕分辨率。