Получить разрешение экрана в приложении Win10 UWP

Поскольку приложение UWP работает в режиме windows на обычных настольных системах, «старый» способ получить разрешение экрана больше не будет работать.

Старое разрешение с Window.Current.Bounds было показано в.

Есть ли другой способ получить разрешение (первичного) дисплея?

Чтобы улучшить другие ответы даже немного больше, следующий код также учитывает коэффициенты масштабирования, например, для моих 200% для моего дисплея Windows (правильно возвращает 3200×1800) и 300% от Lumia 930 (1920×1080).

 var bounds = ApplicationView.GetForCurrentView().VisibleBounds; var scaleFactor = DisplayInformation.GetForCurrentView().RawPixelsPerViewPixel; var size = new Size(bounds.Width*scaleFactor, bounds.Height*scaleFactor); 

Как указано в других ответах, это возвращает только правильный размер на рабочем столе до изменения размера корневого фрейма.

Вызовите этот метод где угодно, в любое время (протестировано в приложении для мобильных / настольных компьютеров):

 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 bounds = ApplicationView.GetForCurrentView().VisibleBounds; 

но вы должны вызвать его, прежде чем windows будут отображаться в моем случае сразу после

 Window.Current.Activate(); 

это хорошее место. В это время вы получите границы windows, в котором появится ваше приложение.

Большое спасибо за помощь в решении ее 🙂

С уважением Алекс

Единственный способ, который я нашел, находится внутри конструктора страницы:

  public MainPage() { this.InitializeComponent(); var test = ApplicationView.GetForCurrentView().VisibleBounds; } 

Я не тестировал в Windows 10 Mobile, когда появится новая версия, я проверю это.

Более простой способ:

 var displayInformation = DisplayInformation.GetForCurrentView(); var screenSize = new Size(displayInformation.ScreenWidthInRawPixels, displayInformation.ScreenHeightInRawPixels); 

Это не зависит от размера текущего вида. В любое время он возвращает реальное разрешение экрана.

Используйте этот метод, чтобы получить размер экрана:

 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; } 

Вы должны вызвать этот метод из App.xaml.cs после Window.Current.Activate (); в методе OnLaunched.

Вот пример кода, и вы можете скачать полный проект.

Просто установите имя для главной сетки или страницы и вызовите его ширину или высоту для нужного элемента:

 Element.Height = PagePane.Height; Element.width = PagePane.Width; 

это самый простой способ использования!

  • Являются ли Click, Tapped и PointerPressed синонимом в WinRT-XAML?
  • Почему ActualWidth и ActualHeight 0.0 в этом случае?
  • WPF Binding - значение по умолчанию для пустой строки
  • Что означает «{x: Static}» в XAML?
  • Передача значения enums в качестве параметра команды из XAML
  • Есть ли ansible чит-лист WPF?
  • Приложение WPF, в котором есть только значок в трее
  • Как растянуть WPF вкладку Элементы заголовка к размеру родительского контроля
  • Разница между {Binding PropertyName} и {Binding Path = PropertyName}
  • Новая строка в атрибуте string
  • Как отключить элемент списка ListBox на основе значения свойства?
  • Давайте будем гением компьютера.