2011-09-24 133 views
1

我需要获取显示器支持的最大屏幕分辨率,而不是当前的分辨率,这很容易。任何帮助,将不胜感激。如何获得显示器支持的最大屏幕分辨率使用C#

编辑:这是为我工作的更新的解决方案。

 public Size GetMaximumScreenSizePrimary() 
     { 
      var scope = new System.Management.ManagementScope(); 
      var q = new System.Management.ObjectQuery("SELECT * FROM CIM_VideoControllerResolution"); 

      using (var searcher = new System.Management.ManagementObjectSearcher(scope, q)) 
      { 
       var results = searcher.Get(); 
       UInt32 maxHResolution = 0; 
       UInt32 maxVResolution = 0; 

       foreach (var item in results) 
       { 
        if ((UInt32)item["HorizontalResolution"] > maxHResolution) 
         maxHResolution = (UInt32)item["HorizontalResolution"]; 

        if ((UInt32)item["VerticalResolution"] > maxVResolution) 
         maxVResolution = (UInt32)item["VerticalResolution"]; 
       } 

       log.Debug("Max Supported Resolution " + maxHResolution + "x" + maxVResolution); 
      } 
      return new Size(maxHResolution, maxVResolution); 
     } 
+0

不知道如何找到..因为操作系统只显示它可以支持,以获得正确的最大分辨率,你可能需要谈谈监视器驱动程序。 –

+0

请参阅[这里](http://stackoverflow.com/questions/744541/how-to-list-available-video-modes-using-c) – Radik

+0

这不是您的视频卡支持的最大屏幕分辨率吗?我认为这不是您连接的显示器支持的最大屏幕分辨率。有时候这两种解决方案可以匹配,但并不总是如此 – Hans

回答

3

获取从管理范围的结果。

  var scope = new System.Management.ManagementScope(); 
      var q = new System.Management.ObjectQuery("SELECT * FROM CIM_VideoControllerResolution"); 

      using (var searcher = new System.Management.ManagementObjectSearcher(scope, q)) 
      { 
       var results = searcher.Get(); 
       foreach (var item in results) 
       { 
        Console.WriteLine(item["Caption"]); 
       } 
      } 

有关哪些信息可用,请参阅CIM_VideoControllerResolution页的详细信息。

+0

谢谢。你的建议很好。我编辑了我的问题以上包括修改后的代码来检索最大分辨率。 – wheels53

1

获取newWidth & newHeight屏幕分辨率为下方,其中u需要

Screen scr = Screen.PrimaryScreen; 
int newWidth = scr.Bounds.Width; 
int newHeight = scr.Bounds.Height; 
+0

谢谢,但上述只返回当前屏幕分辨率不是最大可能的。 – wheels53