繁体   English   中英

如何使用 C# 确定屏幕宽度/高度

[英]How to determine the screen width/height using C#

我想根据用户屏幕的最大宽度/高度动态设置Window的宽度和高度。 如何以编程方式确定这一点?

对于主屏幕:

System.Windows.SystemParameters.PrimaryScreenWidth
System.Windows.SystemParameters.PrimaryScreenHeight

请注意,还有一些其他与主屏幕相关的属性取决于各种因素, Full*Maximised*

虚拟屏幕:

SystemParameters.VirtualScreenWidth
SystemParameters.VirtualScreenHeight

如果您想要运行程序的监视器的特定尺寸(如果有人运行多个监视器),您还可以使用:

var helper = new WindowInteropHelper(this); //this being the wpf form 
var currentScreen = Screen.FromHandle(helper.Handle);

这将返回一个屏幕 object 引用正在运行程序的监视器。 从那里您可以根据需要使用currentScreen.Bounds.Width / Height属性(全尺寸)或currentScreen.WorkingArea.Width / Height (减去任务栏等)。

使用屏幕 Object

Screen.PrimaryScreen.Bounds.Width

您可以使用SizeChanged事件

SizeChanged="MyWindow_SizeChanged"

然后在您的事件处理程序中,

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

其中MainGridMyWindow中所有内容的容器。

当从 Ranorex Studio 8.0.1+git.8a3e1a6f 调用它时,我无法在 .NET 4.0.30319.42000 和 Windows 10 Enterprise 下使用上述任何解决方案,所以我使用了该行

using WinForms = System.Windows.Forms;
[…]
                SetWindowPos(processes[0].MainWindowHandle,
                    0,
                    y,
                    x,
                    WinForms.SystemInformation.PrimaryMonitorSize.Width,
                    WinForms.SystemInformation.PrimaryMonitorSize.Height,
                    SWP.SHOWWINDOW);

你可以得到屏幕的高度和宽度:

int height = System.Windows.Forms.SystemInformation.PrimaryMonitorSize.Height;
int width = System.Windows.Forms.SystemInformation.PrimaryMonitorSize.Width;

然后将 Window 的HeightWidth属性设置为 Initialization 中的属性。

this.Height = height;
this.Width = width;

用于在 WinForms 或 ASP .NET 中获取屏幕的高度和宽度。 没有麻烦,没有大惊小怪,除非您需要在您的项目中引用System.Windows.Forms程序集,如果它不是 WinForm 项目。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM