2011-09-24 41 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

相關問題