Это не неправильный результат :)
Это часть слоя совместимости, чтобы разрешить старые приложения для запуска относительно хорошо в системах с высоким DPI. Ваше приложение не говорит Windows, что оно новое и достаточно крутое, чтобы хорошо его обрабатывать, поэтому Windows делает вид, что его экраны меньше, чем они есть на самом деле - это позволяет вашему приложению отображать как обычно, в то время как Windows обрабатывает приложение достаточно большим, чтобы удобно используемый.
Истина заключается в том, что Winforms на самом деле была хорошей структурой, позволяющей обрабатывать несколько DPI (и локализацию и т. Д.), На самом деле это не было . Таким образом, большинство приложений так же глупы, как, скажем, приложения старой школы MFC - они просто не масштаб хорошо.
В самом деле, ваших применения именно поэтому существуют те слои совместимости - вы еще с использованием .NET 2.0, долго после того, как он устарел (и я предполагаю, что вы до сих пор поддерживаете Windows XP, а) , Если Windows не лжет вашему приложению, это было бы абсолютно непригодным, с текстами, чтобы читать их (или контролируется случайным образом, когда некоторые автомасштабируют, а другие нет).
Теперь, если вы чувствуете, что ваше приложение фактически в состоянии справиться с DPI масштабировании правильно (если вы не дизайн это сделать, это, вероятно, нет), вы можете использовать функцию SetProcessDpiAwareness сказать Windows, что вам не нужна эта сладкая ложь - вы можете справиться с масштабированием, спасибо. У этого есть много преимуществ (все будет выглядеть намного острее), но это означает, что вам нужно будет исправить свое масштабирование повсюду. Обратите внимание, что эта функция вообще не существует в Windows pre-6 (которая не выполняет коррекцию DPI), и вам нужно использовать SetProcessDPIAware в Windows 6+ (SetProcessDpiAwareness - это Windows 8.1+).
Пожалуйста, поделитесь своим кодом. –
проверить это http://stackoverflow.com/questions/5082610/get-and-set-screen-resolution –
Каков результат и что вы ожидали? –