【问题标题】:How to get the screen size of Console Application?如何获取控制台应用程序的屏幕大小?
【发布时间】:2012-05-20 17:47:51
【问题描述】:

如何在控制台应用程序中获取屏幕尺寸?

【问题讨论】:

  • 屏幕是指控制台大小还是显示分辨率?
  • 我说的是控制台应用程序中的屏幕尺寸,而不是控制台应用程序的屏幕尺寸……这是有区别的。而给-1的人(如果有人认为控制台的大小(顺便说一句,如果您正确阅读了问题)则不是)不要讨厌因为您读错了!对其他所有人,我很抱歉我的行为,我很感激你的回答:)
  • @user1344948,您的评论标题字面意思是如何获得控制台应用程序的屏幕尺寸?当你讨厌别人时(部分) 错误...尽管如此,这个线程给出了控制台和屏幕的大小 - 赢了!
  • 这个问题可能很老,但我现在也有同样的问题。 L.B 的解决方案需要我添加对System.Windows.Forms 的引用,而 Iliya Tryapitsin 的解决方案取决于操作系统。在控制台应用程序中没有简单的独立于操作系统的方法来执行此操作,这有点糟糕。

标签: c# .net console-application screen-size


【解决方案1】:

如果您希望通过屏幕大小来更改控制台应用程序的大小 我们首先要得到窗口的最大宽度和高度。

var largestWindowX = Console.LargestWindowWidth;
var largestWindowY = Console.LargestWindowHeight;

对于一个 1920x1080 的屏幕,最大的 X 和 Y 值是 X:240 和 Y:66。通过将值写入屏幕,我们可以手动更改屏幕尺寸以获得相应的 X 和 Y 坐标那个屏幕尺寸。

现在我们在本例中取最后一个屏幕尺寸的最大值 1600x1024,即 X: 200 和 Y: 62,并检查屏幕是否大于或等于显示器,并使控制台窗口 这么大.

if(largestWindowX >= 200 && largestWindowY >= 62)
{
    //The values 200 and 40 can be changed depending on what you are making
    Console.SetWindowSize(200, 40);
}
//add more if else statments depending how you wish to scale it as.
else
{
    //Otherwise any screen size smaller than the sizes added make it this...
    Console.SetWindowSize(/*Your X value*/, /*Your Y value*/);
}

如果您正在寻找一种从操作系统中查找显示大小的方法,我不知道,因为我不是高级程序员,只需了解一些这种庞大的语言即可。

不过,从技术上讲,您可以使用上述变量的值。例如:

if(largestWindowX == 240 && largestWindowY == 66)
{
     Console.WriteLine("This is a 1920x1080 screen");
}

我不确定这是否是一种准确的显示屏幕尺寸的方法。否则,如果需要全屏 Alt+Enter 有效...

【讨论】:

    【解决方案2】:

    如果你想获得显示大小,你可以使用 WMI(Windows Management Instrumentation)

            var scope = new ManagementScope();
            scope.Connect();
    
            var query = new ObjectQuery("SELECT * FROM Win32_VideoController");
    
            using (var searcher = new ManagementObjectSearcher(scope, query))
            {
                var results = searcher.Get();
                foreach (var result in results)
                {
                    Console.WriteLine("Horizontal resolution: " + result.GetPropertyValue("CurrentHorizontalResolution"));
                    Console.WriteLine("Vertical resolution: " + result.GetPropertyValue("CurrentVerticalResolution"));
                }               
            }
    

    【讨论】:

    • 我在 MacOS 主机上运行的 Windows 10 虚拟机上使用 Visual Studio。这是唯一真正返回虚拟客户端分辨率的方法。 Screen.PrimaryScreen 方式是返回主机的分辨率。
    【解决方案3】:
    var w = Console.WindowWidth;
    var h = Console.WindowHeight;
    

    --编辑--

    Screen.PrimaryScreen.Bounds 
    Screen.PrimaryScreen.WorkingArea
    

    【讨论】:

    • 不是我要找的...寻找显示尺寸,在这一点上可能更清楚
    • Screen 类仅适用于 System.Windows.Forms 程序集,因此这可能是可能的(通过手动添加引用),但仅出于此目的需要此程序集。
    • @RobertS。我不认为投反对票是公平的,至少,这对某些人来说是一个答案。随意发布一个更好的、独立于操作系统的解决方案,我会支持它。
    • @L.B 抱歉,但他明确要求控制台应用程序,默认情况下这样的项目中没有 Screen 类。这可能是一个解决方案,但我认为不推荐,因为您添加一个大依赖项只是为了这样一个微小的目的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-05
    • 1970-01-01
    • 2019-01-26
    • 2012-11-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多