toda - Cómo determinar el ancho/alto de la pantalla usando C#
pantalla completa c# (6)
Quiero establecer el ancho y alto de una Window
forma dinámica en función del ancho / alto máximo de las pantallas de usuario. ¿Cómo puedo determinar esto programáticamente?
No pude usar ninguna de las soluciones anteriores bajo .NET 4.0.30319.42000 con Windows 10 Enterprise cuando lo llamé desde Ranorex Studio 8.0.1 + git.8a3e1a6f, así que usé la línea
using WinForms = System.Windows.Forms;
[…]
SetWindowPos(processes[0].MainWindowHandle,
0,
y,
x,
WinForms.SystemInformation.PrimaryMonitorSize.Width,
WinForms.SystemInformation.PrimaryMonitorSize.Height,
SWP.SHOWWINDOW);
Para la pantalla principal:
System.Windows.SystemParameters.PrimaryScreenWidth
System.Windows.SystemParameters.PrimaryScreenHeight
( Tenga en cuenta que también hay otras propiedades relacionadas con la pantalla principal que dependen de varios factores, Full*
y Maximised*
)
Pantalla virtual:
SystemParameters.VirtualScreenWidth
SystemParameters.VirtualScreenHeight
Puede obtener la altura y el ancho de la pantalla:
int height = System.Windows.Forms.SystemInformation.PrimaryMonitorSize.Height;
int width = System.Windows.Forms.SystemInformation.PrimaryMonitorSize.Width;
Luego, establezca las propiedades de Height
y Width
la Ventana a aquellas en la Inicialización.
this.Height = height;
this.Width = width;
Trabaja para obtener la altura y el ancho de la pantalla en WinForms o en ASP .NET. Si no es un proyecto de WinForm, no será un problema, excepto que necesitará hacer referencia al conjunto System.Windows.Forms
en su proyecto.
Puedes usar el evento SizeChanged
SizeChanged="MyWindow_SizeChanged"
Luego, en su controlador de eventos,
private void Window_SizeChanged(object sender, SizeChangedEventArgs e)
{
if (this.MinWidth > 0 && this.MinHeight > 0)
{
double heightScaleFactor = e.NewSize.Height / this.MinHeight;
double widthScaleFactor = e.NewSize.Width / this.MinWidth;
mainGrid.LayoutTransform = new ScaleTransform(heightScaleFactor, widthScaleFactor);
}
}
donde MainGrid
es un contenedor para todos los contenidos en MyWindow
.
Si desea las dimensiones específicas del monitor en el que se está ejecutando su programa (si alguien está ejecutando más de un monitor), también puede usar:
var helper = new WindowInteropHelper(this); //this being the wpf form
var currentScreen = Screen.FromHandle(helper.Handle);
Esto devolverá un objeto de pantalla que hace referencia al monitor en el que se está ejecutando el programa. Desde allí puede usar la propiedad currentScreen.Bounds.Width
/ Height
(para el tamaño completo) o currentScreen.WorkingArea.Width
/ Height
(menos la barra de tareas, etc.) dependiendo de lo que desee.
usar objeto de pantalla
Screen.PrimaryScreen.Bounds.Width