Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Из этой статьи вы узнаете, как решить проблемы с отрисовкой, вызванные ограничениями масштабирования конструктора Windows Forms на мониторах HDPI, запустив Visual Studio как процесс без учета DPI. HDPI обозначает высокие точки на дюйм, с каждой точкой, представляющей физический пиксель устройства.
Более высокая плотность пикселей создает более острые изображения и правильно отображает элементы масштабирования. Без правильного масштабирования элементы пользовательского интерфейса и текст слишком крошечны для эффективного использования и могут перекрываться. Чтобы устранить эту проблему, Windows автоматически масштабирует процентиль пользовательского интерфейса в соответствии с параметром DPI. Например, параметр DPI 100% представляет 96 DPI и 125% — 120 DPI. Мониторы изначально производились с плотностью 96 пикселей на дюйм, что Windows использует в качестве основы для отображения растровой графики с масштабом 100%. Тем не менее, как технология отображения развивалась, мониторы теперь поставляются с панелями 300 DPI или выше.
Когда приложение заявляет о своей осведомленности о DPI, это означает, что приложение хорошо работает при более высоких настройках DPI, и поэтому Windows может применять автомасштабирование. И наоборот, приложения, не использующие DPI, отображаются в фиксированном значении DPI 96 пикселей на дюйм или 100%, и поэтому автоматическое масштабирование не применяется.
Конструктор Windows Forms не знает о DPI
Замечание
В Visual Studio 2022 версии 17.8 или более поздней версии можно избежать проблем, описанных в этой статье. Visual Studio 2022 версии 17.8 обеспечивает поддержку неузнаваемых вкладок DPI в приложении с поддержкой DPI. См. улучшения DPI Visual Studio. Это позволяет разрабатывать Windows Forms для контекстов, не учитывающих DPI, не требуя запускать Visual Studio в режиме, не учитывающем DPI. Чтобы использовать этот параметр в проекте Windows Forms, задайте для свойства ForceDesignerDPIUnawaretrue значение в файле проекта.
Свойство ForceDesignerDpiUnaware проекта поддерживается только для проектов Windows Forms, предназначенных для .NET 6 или более поздней версии. Проекты, предназначенные для .NET Framework (включая .NET Framework 4.8), не используют этот параметр; Конструктор будет продолжать работать с поведением DPI по умолчанию.
<PropertyGroup>
...
<ForceDesignerDPIUnaware>true</ForceDesignerDPIUnaware>
</PropertyGroup>
По умолчанию Visual Studio — это приложение с поддержкой точек на дюйм (DPI), что означает автоматическое масштабирование дисплея. Однако конструктор Windows Forms — это приложение, не поддерживающее DPI, поэтому оно отображается как растровое изображение в виде битмапа на 96 DPI. Без поддержки автомасштабирования проблемы и перекрытия возникают при открытии форм на мониторах HDPI, как показано на этом изображении:
При открытии формы в конструкторе Windows Forms на мониторе HDPI Visual Studio отображает информационную панель, отображающую текущий процент масштабирования монитора (например, 150%/144 DPI), возможность перезапуска Visual Studio в 100% масштабирования для сопоставления конструктора Windows Forms и дополнительных сведений. Перезапуск при масштабировании на 100% делает Visual Studio нечувствительным к DPI, позволяя правильную отрисовку без перекрытия.
Подсказка
- Если вы закрыли информационный бар и хотите перезапустить Visual Studio в режиме без учета DPI, используйте средство DevEnv.exe.
- Если вы не работаете в конструкторе, вы можете игнорировать информационную панель. Вы также можете отключить уведомления , чтобы панель сведений не отображалась.
Перезапуск Visual Studio в качестве процесса без учета DPI
Рекомендуемое решение для устранения этих проблем пользовательского интерфейса — перезапуск Visual Studio как DPI-независимого процесса, что означает перезапуск с масштабированием 100% (96 DPI).
Чтобы переключиться на режим без учета DPI:
- Выберите параметр "Перезапустить Visual Studio с 100% масштабированием" на желтой панели сведений, которая отображается при открытии формы в конструкторе Windows Forms.
Важно перезапустить Visual Studio, чтобы вернуть его по умолчанию в качестве процесса, поддерживающего DPI, после завершения работы в конструкторе Windows Forms.
Чтобы вернуться к поддержке DPI, выполните следующее:
- Закройте и снова откройте Visual Studio, чтобы снова вернуться к поддержке DPI. Кроме того, в информационной строке выберите параметр Перезапустить Visual Studio как процесс, поддерживающий DPI.
При запуске Visual Studio без учета DPI проблемы с макетом дизайнера устраняются, однако шрифты могут отображаться размытыми, а проблемы могут проявляться в других дизайнерах, таких как дизайнер XAML. Visual Studio отображает другое информационное сообщение, когда работа в режиме DPI не поддерживается, и сообщает, что "Visual Studio работает как процесс, не поддерживающий DPI". Конструкторы WPF и XAML могут отображаться некорректно.
Замечание
- Если вы открепите окна инструментов после того как выбрали параметр перезапустить Visual Studio как процесс с отключенной поддержкой DPI, их положение может измениться.
- Профиль Visual Basic по умолчанию не открывает проекты заново при перезапуске Visual Studio в качестве процесса, не поддерживающего DPI. Вместо этого получите доступ к проекту через Файл>Недавние проекты и решения.
Использование Windows для настройки масштабирования дисплея до 100%
Чтобы избежать использования Visual Studio для переключения масштабирования отображения, настройте масштабирование в параметрах Windows. Например, в Windows 11 можно задать масштабирование до 100% (96 DPI).
Для этого введите параметры отображения в поле поиска панели задач и выберите пункт "Изменить параметры отображения". В окне "Параметры " задайте размер текста, приложений и других элементов на 100%. Помните, что масштабирование 100% (96 DPI) может сделать пользовательский интерфейс слишком небольшим для практического использования.
Отключение масштабирования с помощью средства командной строки DevEnv
Чтобы управлять параметрами отображения с помощью средств командной строки, а не средств пользовательского интерфейса (пользовательского интерфейса), используйте DevEnv.exe. Команда devenv.exe принимает /noscale в качестве параметра командной строки для выполнения в режиме масштабирования 100%. Вот как использовать его:
- Выберите Инструменты>Командная строка>Командная строка разработчика в строке меню Visual Studio.
- Затем введите
devenv /noScale.
Другие варианты
Помимо указанных выше вариантов, вы также можете попробовать следующие варианты:
Выберите параметр оптимизации отрисовки для экранов с различными плотностями пикселей (требуется перезапуск)
Отключите уведомления о масштабировании в Visual Studio, например, если вы не работаете в конструкторе. Вот как отключить уведомления:
Откройте панель"Параметры>" и разверните раздел"Общие>>Windows Forms".
В разделе "Поддержка высокого уровня DPI" снимите флажок "Уведомления о масштабировании DPI ".
Откройте диалоговое окно"Параметры> и разверните раздел"Общие" > Windows Forms.
В разделе "Поддержка высокого уровня DPI" установите для параметра "Уведомления о масштабировании DPI " значение False.
Troubleshoot
Если переход на уровень осведомленности о DPI не работает в Visual Studio, убедитесь dpiAwareness , что значение отсутствует в подразделе HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\devenv.exe в редакторе реестра. Удалите значение, если оно присутствует.