none
Разные результаты разрешения экрана в C# RRS feed

  • Вопрос

  • Консольное приложение, Windows 7.
    namespace MyLearningConsCS
    {
     class Program
     {
      static void Main(string[] args)
      {
       Int32 xmax = System.Windows.Forms.SystemInformation.PrimaryMonitorSize.Width;
       Int32 ymax = System.Windows.Forms.SystemInformation.PrimaryMonitorSize.Height;
       Console.WriteLine("SystemInformation.PrimaryMonitorSize\n Width = {0} Height = {1}", xmax, ymax);
       xmax = System.Windows.Forms.Screen.PrimaryScreen.Bounds.Width;
       ymax = System.Windows.Forms.Screen.PrimaryScreen.Bounds.Height;
       Console.WriteLine("System.Windows.Forms.Screen.PrimaryScreen.Bounds\n Width = {0} Height = {1}", xmax, ymax);
       xmax = System.Windows.Forms.SystemInformation.PrimaryMonitorMaximizedWindowSize.Width;
       ymax = System.Windows.Forms.SystemInformation.PrimaryMonitorMaximizedWindowSize.Height;
       Console.WriteLine("SystemInformation.PrimaryMonitorMaximizedWindowSize\n Width = {0} Height = {1}", xmax, ymax);
       Console.ReadKey();
      }
     }
    }
    
    
     Результаты выполнения программы
    SystemInformation.PrimaryMonitorSize
     Width = 1366 Height = 768
    System.Windows.Forms.Screen.PrimaryScreen.Bounds
     Width = 1366 Height = 768
    SystemInformation.PrimaryMonitorMaximizedWindowSize
     Width = 1382 Height = 744
    
    
     Удивляют результаты для функции SystemInformation.PrimaryMonitorMaximizedWindowSize: разрешение по горизонтали больше, чем установлено в параметрах экрана в Панели управления, а по вертикали - меньше. Подскажите, пожалуйста, почему такие странные результаты при выполнении этой функции.

    Alex

Ответы

  • Добрый вечер, Alex.
    А что удивляет ?
    MaximizedWindowSize Width может быть больше размеров экрана (попробуйте растягивать окна).
    Height ограничено с учётом панели задач.
    (если в свойствах панели задач установить: Автоматически скрывать панель задач).
    MaximizedWindowSize Нeight тоже может быть больше размеров экрана.

    По моему, это не относится к проблемам Windows 7; вообще не относится к проблемам, а просто традиция Windows.
    ----
    P.S. При просмотре настроек я использовал другую функцию - GetSystemMetrics в С++.
    Результаты схожи с Вашими (у меня другие размеры экрана).

    • Помечено в качестве ответа Abolmasov Dmitry 22 мая 2011 г. 20:59

Все ответы

  • Вроде как это известная проблема, по крайней мере под Windows 7. 
    - Dmitri Nesteruk, MVP C#, Microsoft Partner
  • Добрый вечер, Alex.
    А что удивляет ?
    MaximizedWindowSize Width может быть больше размеров экрана (попробуйте растягивать окна).
    Height ограничено с учётом панели задач.
    (если в свойствах панели задач установить: Автоматически скрывать панель задач).
    MaximizedWindowSize Нeight тоже может быть больше размеров экрана.

    По моему, это не относится к проблемам Windows 7; вообще не относится к проблемам, а просто традиция Windows.
    ----
    P.S. При просмотре настроек я использовал другую функцию - GetSystemMetrics в С++.
    Результаты схожи с Вашими (у меня другие размеры экрана).

    • Помечено в качестве ответа Abolmasov Dmitry 22 мая 2011 г. 20:59
  • 1. Я раньше думал, что разрешение экрана - это предельное количество пикселов по горизонтали и вертикали. Поэтому меня и удивило, как размеры могут быть больше предельных. Меньшие значения меня не очень удивляют, поскольку в название функции входит размер окна. Все-таки до конца я так и не понял, почему размеры экрана могут превышать предельные. Это как-то связано с виртуальными экранами?

    2. У меня на экранах монитора видны узкие черные полоски, обрамляющие светлое окно на экране монитора. В связи с этим у меня возникли следующие вопросы:

    2.1. Размеры этих черных окантовок включены в предельные размеры?

    2.2. Можно ли как-то с помощью системных функций Windows определить размеры в пикселах этих черных окантовок по горизонтали и вертикали.


    Alex
  • Добрый день, Alex.
    У Вас очень много вопросов...

    1. Разрешение - количество пикселей в изображении.
    Относительно экрана: разрешение экрана задаётся в настройках экрана.
    После настройки - разрешение экрана остаётся неизменным.
    Обратите внимание, при настройке могут появляться предупреждения.
    Например, "... некоторые элементы могут не поместиться на экран".
    ----
    Не стоит смешивать понятия разрешение экрана и разрешение окон в Windows.
    Окна могут иметь большее разрешение.