Гуглите DpiAware — изучите проблемы и выберете оптимальное решение для себя. Тут проблема в диком легаси наследии, реализованном через костыли и которое пытаются сохранить, добавляя исправления в виде костылей, которые генерируют новые баги и в новых версиях это пытаются исправить опять костылями. Кроме того, алгоритм работы масштабирования немного отличается в разных версиях ОС. Так что очень рекомендую проверять работу приложения в разных версиях ОС (7, 8.1, 10 Home, 10 Enterprise LTS) и с выключенным и включенным масштабированием. Да-да, в домашней десятке и в корпоративной долгосрочной десятке можно получить разный результат.
Вариант 1 — вызов специальной функции в коде (реальный код, который я использую — плюс вторая функция для масштабирования шрифтов, тык — примерно так получается в 4к):
const int WinDefaultDPI = 96;
/// <summary>
/// Исправление блюра при включенном масштабировании в ОС windows 8 и выше
/// </summary>
public static void DpiFix()
{
if (Environment.OSVersion.Version.Major >= 6)
{
SetProcessDPIAware();
}
}
/// <summary>
/// WinAPI SetProcessDPIAware
/// </summary>
/// <returns></returns>
[DllImport("user32.dll")]
private static extern bool SetProcessDPIAware();
/// <summary>
/// Исправление размера шрифтов
/// </summary>
/// <param name="c"></param>
public static float DpiFixFonts(Control c)
{
Graphics g = c.CreateGraphics();
float dx = g.DpiX
, dy = g.DpiY
, fontsScale = Math.Max(dx, dy) / WinDefaultDPI
;
g.Dispose();
return fontsScale;
}
Плюс все формы имеют следующий конфиг (код, вызываемый в конструкторах форм):
this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi;
Учтите, что AutoScaleDimensions
— в конструкторе выставляется автоматически в зависимости от разрешения и DPI вашего монитора. Поэтому я не использую конструкторы. Иначе, при запуске приложения на разных машинах с разным DPI можно получить очень неожиданные результаты.
Вариант 2 (v4.7):
app.config
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
</configSections>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7" />
</startup>
<System.Windows.Forms.ApplicationConfigurationSection>
<add key="DpiAwareness" value="PerMonitorV2" />
<add key="EnableWindowsFormsHighDpiAutoResizing" value="true" />
</System.Windows.Forms.ApplicationConfigurationSection>
</configuration>
Вариант 3 (v4.7):
app.config
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
</configSections>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7" />
</startup>
<System.Windows.Forms.ApplicationConfigurationSection>
<add key="DpiAwareness" value="PerMonitorV2" />
<add key="EnableWindowsFormsHighDpiAutoResizing" value="false" />
</System.Windows.Forms.ApplicationConfigurationSection>
<configuration>
Вариант 4:
app.manifest
<!-- Указывает, что приложение поддерживает определение DPI и не будет автоматически масштабироваться Windows при более высоких
значениях DPI. Приложения Windows Presentation Foundation (WPF) по умолчанию поддерживают определение DPI, им не нужно
специально включать параметр для этого. Для приложений Windows Forms на платформе .NET Framework 4.6, для которых задан этот параметр, необходимо
также задать для "EnableWindowsFormsHighDpiAutoResizing" значение "true" в файле app.config.-->
<application xmlns="urn:schemas-microsoft-com:asm.v3">
<windowsSettings>
<dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true</dpiAware>
</windowsSettings>
</application>
Чем асинхронная логика (схемотехника) лучше тактируемой, как я думаю, что помимо энергоэффективности — ещё и безопасность.
Hrethgir 14.05.2025
Помимо огромного плюса в энергоэффективности, асинхронная логика — тотальный контроль над каждым совершённым тактом, а значит — безусловная безопасность, где безконтрольно не совершится ни одного. . .
Многопоточные приложения на C++
bytestream 14.05.2025
C++ всегда был языком, тесно работающим с железом, и потому особеннно эффективным для многопоточного программирования. Стандарт C++11 произвёл революцию, добавив в язык нативную поддержку потоков,. . .
Stack, Queue и Hashtable в C#
UnmanagedCoder 14.05.2025
Каждый опытный разработчик наверняка сталкивался с ситуацией, когда невинный на первый взгляд List<T> превращался в узкое горлышко всего приложения. Причина проста: универсальность – это прекрасно,. . .
Как использовать OAuth2 со Spring Security в Java
Javaican 14.05.2025
Протокол OAuth2 часто путают с механизмами аутентификации, хотя по сути это протокол авторизации. Представьте, что вместо передачи ключей от всего дома вашему другу, который пришёл полить цветы, вы. . .
Анализ текста на Python с NLTK и Spacy
AI_Generated 14.05.2025
NLTK, старожил в мире обработки естественного языка на Python, содержит богатейшую коллекцию алгоритмов и готовых моделей. Эта библиотека отлично подходит для образовательных целей и. . .
Реализация DI в PHP
Jason-Webb 13.05.2025
Когда я начинал писать свой первый крупный PHP-проект, моя архитектура напоминала запутаный клубок спагетти. Классы создавали другие классы внутри себя, зависимости жостко прописывались в коде, а о. . .
Обработка изображений в реальном времени на C# с OpenCV
stackOverflow 13.05.2025
Объединение библиотеки компьютерного зрения OpenCV с современным языком программирования C# создаёт симбиоз, который открывает доступ к впечатляющему набору возможностей. Ключевое преимущество этого. . .
POCO, ACE, Loki и другие продвинутые C++ библиотеки
NullReferenced 13.05.2025
В C++ разработки существует такое обилие библиотек, что порой кажется, будто ты заблудился в дремучем лесу. И среди этого многообразия POCO (Portable Components) – как маяк для тех, кто ищет. . .
Паттерны проектирования GoF на C#
UnmanagedCoder 13.05.2025
Вы наверняка сталкивались с ситуациями, когда код разрастается до неприличных размеров, а его поддержка становится настоящим испытанием. Именно в такие моменты на помощь приходят паттерны Gang of. . .
Создаем CLI приложение на Python с Prompt Toolkit
py-thonny 13.05.2025
Современные командные интерфейсы давно перестали быть черно-белыми текстовыми программами, которые многие помнят по старым операционным системам. CLI сегодня – это мощные, интуитивные и даже. . .
В этой инструкции подробно о том, что делать, если в Windows 10 или отдельных программах и приложениях вы видите размытые шрифты, что может случиться как после изменения масштабирования в параметрах экрана, так и без этих действий.
В первую очередь речь пойдет о способах исправления проблемы, связанных с изменением разрешения экрана, которые очевидны для большинства пользователей, но могут быть не учтены начинающими пользователями, а затем — другие способы исправить размытость текста в Windows 10.
Примечание: если шрифты стали размытыми после недавнего изменения параметров масштабирования (125%, 150%) в параметрах экрана (пункт «Изменение размера текста, приложения, и других элементов»), попробуйте для начала просто перезагрузить компьютер (даже если до этого уже не раз его выключали-включали, так как выключение в 10-ке не то же самое, что перезагрузка).
Автоматическое устранение размытия шрифтов в Windows 10 1803
В Windows 10 1803 April Update появилась дополнительная опция, позволяющая исправить размытые шрифты для приложений, которые не поддерживают масштабирование (или делают это неправильно). Найти параметр можно, зайдя в Параметры — Система — Дисплей — Дополнительные параметры масштабирования, пункт «Разрешить Windows исправлять размытость в приложениях».
Если окажется, что параметр включен, а проблема сохраняется, попробуйте, наоборот, отключить его.
Проверка разрешения экрана
Этот пункт для тех из пользователей, кто не до конца представляет, что такое физическое разрешение экрана монитора и почему разрешение, выставленное в системе должно соответствовать физическому.
Итак, современные мониторы имеют такой параметр, как физическое разрешение, представляющее собой количество точек по горизонтали и вертикали на матрице экрана, например, 1920×1080. Причем, если в системе у вас установлено любое разрешение, не кратно отличающееся от физического, вы увидите искажения и размытость шрифтов.
Поэтому: если вы не уверены, убедитесь, что выставленное в Windows 10 разрешение экрана соответствует действительному разрешению экрана (при этом в некоторых случаях это может привести к тому, что шрифт вам покажется слишком мелким, но это можно будет исправить параметрами масштабирования).
- Чтобы узнать физическое разрешение экрана — можете просто поискать технические характеристики в Интернете, введя марку и модель вашего монитора.
- Чтобы установить разрешение экрана в Windows 10, кликните в любом пустом месте рабочего стола правой кнопкой мыши и выберите пункт «Параметры экрана», после этого нажмите по пункту «Дополнительные параметры экрана» (внизу справа) и установите нужное разрешение. Если в списке отсутствует нужное разрешение, то вероятно вам требуется установить официальные драйвера вашей видеокарты, пример см. Установка драйверов NVIDIA в Windows 10 (для AMD и Intel будет то же самое).
Подробнее на тему: Как изменить разрешение экрана в Windows 10.
Примечание: если вы используете несколько мониторов (или монитор + ТВ) и изображение на них дублируется, то Windows при дублировании использует одинаковое разрешение на обоих экранах, при этом для какого-то из них оно может быть «не родное». Решение тут лишь одно — изменить режим работы двух мониторов на «Расширить экраны» (нажав клавиши Win+P) и установить для каждого из мониторов правильное разрешение.
Устранение размытости текста при масштабировании
Если проблема с размытыми шрифтами возникла после изменения размеров элементов в «Правый клик по рабочему столу» — «Параметры экрана» — «Изменение размера текста, приложений и других элементов» на 125% и более, а перезагрузка компьютера или ноутбука не исправила проблему, попробуйте следующий вариант.
- Нажмите клавиши Win+R и введите dpiscaling (или зайдите в панель управления — экран).
- Нажмите по пункту «Установить настраиваемый уровень масштабирования».
- Убедитесь, что в нем установлено 100%. Если нет — измените на 100, примените, и перезагрузите компьютер.
И второй вариант этого же способа:
- Кликните правой кнопкой мыши по рабочему столу — параметры экрана.
- Верните масштабирование на 100%.
- Зайдите в Панель управления — Экран, нажмите «Установить настраиваемый уровень масштабирования», и задайте требуемое масштабирование Windows 10.
После применения настроек, вас попросят выйти из системы, а после входа вы должны будете увидеть измененные размеры шрифтов и элементов, но уже без размытия (при использовании данной опции применяется иное масштабирование, чем в параметрах экрана Windows 10).
Как исправить размытые шрифты в программах
Не все программы Windows поддерживают правильное изменение масштаба и, как следствие, в отдельных приложениях вы можете видеть размытые шрифты, в то время как в остальной системе такие проблемы не наблюдать.
В этом случае вы можете исправить проблему либо использовав подход из отдельной инструкции, либо отключив масштабирование в программе следующим образом:
- Кликните правой кнопкой мыши по ярлыку или исполняемому файлу программы и выберите пункт «Свойства».
- На вкладке «Совместимость» установите отметку в пункте «Отключить масштабирование изображения при высоком разрешении экрана» и примените настройки. В новых версиях Windows 10 нажмите «Изменить параметры высокого DPI», а затем отметьте пункт «Переопределите режим масштабирования» и выберите «Приложение».
При следующих запусках программы, проблема с размытыми шрифтами проявляться не должна (однако, они могут оказаться мелкими на экранах с высоким разрешением).
ClearType
В некоторых случаях (например, из-за неправильной работы драйверов видеокарты), проблему с размытым текстом может вызывать неправильная работа функции сглаживания шрифтов ClearType, которая включена по умолчанию в Windows 10 для ЖК экранов.
Попробуйте отключить или настроить эту функцию и проверить была ли решена проблема. Для того, чтобы это сделать, введите в поиск на панели задач ClearType и запустите «Настройка текста ClearType».
После этого попробуйте как вариант с настройкой работы функции, так и вариант с её отключением. Подробнее: Настройка ClearType в Windows 10.
Дополнительная информация
В Интернете также имеется программа Windows 10 DPI Blurry Fix, призванная решать проблему с размытыми шрифтами. Программа, насколько я понял, использует второй способ из этой статьи, когда вместо масштабирования Windows 10 используется «старое» масштабирование.
Для использования достаточно установить в программе «Use Windows 8.1 DPI scaling» и настроить желаемый уровень масштабирования.
Скачать программу можно с сайта разработчика windows10_dpi_blurry_fix.xpexplorer.com — только не забывайте проверить ее на VirusTotal.com (на текущий момент она чистая, но есть негативные отзывы, так что будьте внимательны). Также учитывайте, что запуск программы требуется при каждой перезагрузке (она сама себя добавить в автозагрузку.
И, наконец, если ничто не помогает, еще раз перепроверьте, установлены ли у вас оригинальные последние драйверы для видеокарты, не путем нажатия «обновить» в диспетчере устройств, а путем ручной загрузки с соответствующих официальных сайтов (или с помощью утилит NVIDIA и AMD).
System.Windows.Forms.DataVisualization.dll is considered a type of Dynamic Link Library (DLL) file. Dynamic Link Library files, like System.Windows.Forms.DataVisualization.dll, are essentially a «guide book» that stores information and instructions for executable (EXE) files — like AppInstaller.exe — to follow. These files were created so that multiple programs (eg. Microsoft Visual Studio 2010 Ultimate) could share the same System.Windows.Forms.DataVisualization.dll file, saving valuable memory allocation, therefore making your computer run more efficiently.
Unfortunately, what makes DLL files so convenient and efficient, also makes them extremely vulnerable to problems. If something happens to a shared DLL file, either it goes missing or gets corrupted in some way, it can generate a «runtime» error message. Runtime is pretty self-explanatory; it means that these errors are triggered when System.Windows.Forms.DataVisualization.dll is attempted to be loaded either when Microsoft Visual Studio 2010 Ultimate is starting up, or in some cases already running. Some of the most common System.Windows.Forms.DataVisualization.dll errors include:
- Access Violation at address — System.Windows.Forms.DataVisualization.dll.
- System.Windows.Forms.DataVisualization.dll could not be found.
- Cannot find C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\System.Windows.Forms.DataVisualization.dll.
- Cannot register System.Windows.Forms.DataVisualization.dll.
- Cannot start Microsoft Visual Studio 2010 Ultimate. A required component is missing: System.Windows.Forms.DataVisualization.dll. Please install Microsoft Visual Studio 2010 Ultimate again.
- Failed to load System.Windows.Forms.DataVisualization.dll.
- The application has failed to start because System.Windows.Forms.DataVisualization.dll was not found.
- The file System.Windows.Forms.DataVisualization.dll is missing or corrupt.
- This application failed to start because System.Windows.Forms.DataVisualization.dll was not found. Re-installing the application may fix this problem.
Your System.Windows.Forms.DataVisualization.dll file could be missing due to accidental deletion, uninstalled as a shared file of another program (shared with Microsoft Visual Studio 2010 Ultimate), or deleted by a malware infection. Furthermore, System.Windows.Forms.DataVisualization.dll file corruption could be caused from a power outage when loading Microsoft Visual Studio 2010 Ultimate, system crash while loading System.Windows.Forms.DataVisualization.dll, bad sectors on your storage media (usually your primary hard drive), or quite commonly, a malware infection. Thus, it’s critical to make sure your anti-virus is kept up-to-date and scanning regularly.
В последних версиях Windows 10, Microsoft добавила новые возможности для исправления приложений, чтобы исправить размытие на дисплеях с высоким разрешением. Даже если какое-то приложение правильно масштабируется сразу после открытия, шрифт может стать размытым при последующем взаимодействии с ним.
Начиная с Windows 10 версии 1803, вы можете включить новую функцию, которая будет автоматически исправлять приложения, которые имеют проблемы с масштабированием и выглядят размытыми. На момент написания этой статьи функция не будет применяться ко всем настольным приложениям, поэтому некоторые из них будут иметь размытый текст, до тех пор, пока вы не перезапустите их вручную.
Кроме того, новая функция улучшает масштабирование настольных приложений, если они находятся на главном экране. Давайте посмотрим, как включить это функцию для устранения размытия.
Если вы столкнулись с проблемой смазанных шрифтов в Windows 10 и вы не удовлетворены результатом вашего DPI масштабирования, вы должны попробовать решения, приведенные в этой статье.
Способ 1 С помощью приложения «Параметры».
1. Откройте приложение «Параметры».
2. Перейдите в раздел «Система» → «Дисплей» и нажмите ссылку «Дополнительные параметры масштабирования» справа.
3. На странице масштабирования включите параметр «Исправление масштабирования для приложений» (Fix scaling).
Если у вас установленно приложение, которое всегда размыто, откройте его, и Windows 10 должна показать вам уведомление, сообщив, что обнаружено размытое приложение, которое будет исправлено. Разрешите Windows 10 внести исправления, и проверьте, улучшено ли приложение.
Еще один способ, вы можете попробовать уменьшить настройки DPI на 100%. Вот как это делается:На этом же экране есть функция «Настраиваемое масштабирование», которую вы можете использовать для установки пользовательского уровня масштабирования.
- Откройте приложение Параметры, нажав сочетание клавиш Win + I.
- Перейдите по следующему пути — Система → Дисплей.
- Установите значение в выпадающем меню «Изменение размера текста, приложений и других элементов». Значение должно быть «100%», как показано ниже:
- Выйти из системы Windows и снова войти.
Исправление масштабирования будет применяться автоматически для всех поддерживаемых приложений. Если результат все еще вас не устраивает, попробуйте следующее решение.
Способ 2 — Исправить масштабирование для приложений на вкладке «Совместимость».
Наконец, последний способ требует включения данной опции, используя вкладку совместимости в свойствах приложения. Таким образом, вы можете включить автоматическое исправление размытия приложений, которые не определяются Windows должным образом.
1. Кликните правой кнопкой мыши на исполняемый файл приложения и выберите в контекстном меню «Свойства».
2. Нажмите «Изменить параметры высокого DPI» (Change high DPI settings).
3. Включите функцию, установив флажок для «Переопределение масштабирования с высоким разрешением» (Override System DPI).
4. Выберите «Приложение» или «Система» в раскрывающемся списке ниже.
Все! Теперь приложение должно автоматически масштабироваться при высоком разрешении, тем самым устранив размытие.
Эта функция была крайне необходима. Многие популярные приложения страдают от размытого текста и пользовательского интерфейса, разработчики мало что делают для обновления приложений для HD-дисплеев.
Способ 3 — Быстро включить исправление масштабирования с помощью уведомления.
Исправить размытие для приложений в момент получения уведомления. Уведомление появляется, когда система обнаруживает, что на главном экране есть приложения которые имеют проблемы с отображением.
Сделайте следующее.
1. Когда вы увидите это уведомление, нажмите кнопку «Да исправить приложение».
2. Система попытается решить проблему автоматически.
Способ 4 — Устранение размытых шрифтов в Windows 10 путем изменения способа масштабирования.
Windows 10 Можно вернуть способ масштабирования, который используется для Windows 8 RTM и Windows 7. У многих пользователей, это обеспечивает гораздо лучшие результаты, чем по умолчанию.
Чтобы активировать старый метод масштабирования, выполните следующие действия :
1. Откройте редактор реестра.
2. Перейти к следующему разделу реестра: HKEY_CURRENT_USER\Control\Desktop
3. Установите параметр DpiScalingVer — 0x00001018, как показано ниже:
4. Установите параметр Win8DpiScaling : 1
5. Создать новый 32-битный ключ DWORD с именем LogPixels и установите его значение: 0x00000078
6. Теперь, перезагрузите Windows 10.
После перезагрузки, вы больше не увидите размытых шрифтов.
Чтобы сэкономить ваше время, ниже — Ссылка на готовые файлы правки реестра, вы можете включить и отключить этот способ масштабирования одним щелчком мыши.
Скачать файлы реестра
«ON_DPI.reg» файл, позволит включить масштабирование.
Чтобы отменить изменения, запустите «Default_DPI.reg». Не забудьте перезагрузить компьютер.
Способ 5 — Проблему размытых шрифтов можно решить и с помощью бесплатного и простого инструмента для Windows 10 DPI Fix .
Похоже, Microsoft наконец, исправила размытые шрифты, для многих пользователей.
Но мы по-прежнему получаем электронные письма от людей, которые заявили, что обновление Creators не устраняет размытые шрифты.
Поэтому, если у вас все еще есть размытые шрифты после обновления, вы можете использовать DPI Fix, чтобы сделать их более четкими.
После запуска утилиты, необходимо выбрать параметр «Use Windows 8.1 DPI scaling», и нажать «Apply» все проблема размытости шрифтов уже решена.
Если вы решили использовать Windows 10 DPI Fix вы должны знать:
- Программа должна находиться в автозагрузке. Соответственно она будет запускаться вместе с ОС. После регулировки DPI утилита автоматически закрывается.
- В Microsoft Edge Flash — элементы выглядят чуть меньше.
Скачать Windows 10 DPI Fix c сайта softpedia.