Разрешение экрана не соответствует Screen.Bounds

Я вижу интересную разницу между разрешением, установленным через панель управления, и выводом Screen.Bounds для моего широкоэкранного ноутбука. Экран 15.5 ", а разрешение, установленное через панель управления, составляет 1920x1080. Однако, когда я запускаю какой-то код, подобный этому.

Screen[] screens = Screen.AllScreens;
foreach (Screen scr in screens)
{
    Console.WriteLine("Width: " + scr.Bounds.Width + ", Height: " + scr.Bounds.Width);
}

Вывод показывает мое разрешение 1536x864. Я немного осмотрелся и подумал, что это может быть связано с проблемой DPI, и когда я смотрю на настройки дисплея, ползунок (на Windows 8.1) находится посередине, а флажок гласит: «Позвольте мне выбрать один уровень масштабирования для всех моих дисплеев "не проверено. Я запустил этот маленький код, чтобы получить текущие настройки DPI.

float dpiX, dpiY;
Graphics graphics = new System.Windows.Forms.Form().CreateGraphics();
Console.WriteLine("DPI: " + graphics.DpiX);

DPI, который возвращается, составляет 96.0, что, как я понимаю, является настройкой 100% DPI (поэтому нет увеличения или как его там называют). Мне кажется странным, что границы, возвращаемые Screen, составляют ровно 80% моего фактического разрешения, что заставляет меня думать, что мой DPI установлен на 100 (или 125%), но это не так. У меня проблема только с экраном моего ноутбука, поскольку у моего дополнительного монитора границы, равные разрешению через панель управления. Связано ли это с тем, что в настройках DPI не заданы дисплеи, независимые от друг друга (этот флажок установлен)? Для некоторого фона я пишу инструмент, который берет текущие экраны и получает изображения из Reddit и размещает их на экранах независимо друг от друга, поэтому, какое бы у меня ни было решение, оно должно правильно получать разрешение каждого дисплея.

Ответы на вопрос(2)

Ваш ответ на вопрос