what samples que programación bootstrap app c# xaml windows-runtime windows-10 uwp

c# - samples - what is uwp app



Obtenga resolución de pantalla en la aplicación Win10 UWP (7)

Bien, entonces la respuesta de Juan Pablo García Coello me llevó a la solución: ¡Gracias por eso!

Puedes usar

Window.Current.Activate();

pero debes llamarlo antes de que se muestre la ventana en mi caso justo después

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

Es un buen lugar. En este momento obtendrá los límites de la ventana en la que aparecerá su aplicación.

Muchas gracias por ayudarme a resolverlo :)

Saludos Alex

Como una aplicación para UWP se ejecuta en modo ventana en sistemas de escritorio comunes, la forma "antigua" de obtener la resolución de pantalla ya no funcionará.

La resolución anterior con Window.Current.Bounds era como se muestra en.

¿Hay alguna otra forma de obtener la resolución de la pantalla (primaria)?


La única forma que encontré es dentro del constructor de una página:

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

No lo he probado en Windows 10 Mobile, cuando aparezca la nueva versión, lo probaré.


La forma más simple:

var bounds = ApplicationView.GetForCurrentView().VisibleBounds;

Esto no depende del tamaño de vista actual. En cualquier momento, devuelve una resolución de pantalla real.


Llame a este método en cualquier lugar, en cualquier momento (probado en la aplicación móvil / de escritorio):

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


Para mejorar aún más las otras respuestas, el siguiente código también se ocupa de los factores de escala, por ejemplo, para mi 200% para mi pantalla de Windows (devuelve correctamente 3200x1800) y el 300% de Lumia 930 (1920x1080).

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

Como se indicó en las otras respuestas, esto solo devuelve el tamaño correcto en el escritorio antes de que se cambie el tamaño del marco raíz.


Simplemente configure un nombre para la cuadrícula o página principal y llame a su ancho o alto para el elemento que desee:

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

¡es la forma más fácil que puedes usar!


Use este método para obtener el tamaño de la pantalla:

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

Debe llamar a este método desde App.xaml.cs, después de Window.Current.Activate (); en el método OnLaunched.

Aquí está el código de muestra y puede download el proyecto completo.