Как отключить масштабирование приложения в windows 7
Элементов, таких как приложения, панели задач, значки, панели инструментов, текста и диалоговые окна отображаться нечетко.
Элементы являются слишком велико или слишком мало по сравнению с остальной части рабочего стола.
Размытый текст появляется в приложениях или в интерфейсе Windows.
Хотя эти симптомы могут отображаться на один монитор, они чаще при использовании нескольких мониторов, которые по-разному разрешение экрана. Такое поведение также наблюдается при изменении конфигурации оборудования, например, когда закрепление и Отмена закрепления устройства, использующего внешний монитор или отсоединить внешний монитор от устройства.
Эти проблемы обычно возникают в следующих случаях:
Приложения перемещаются между мониторами, использующих различным разрешениям дисплея.
Монитор, что приложения отображаются на изменения между стыковочный узел и конфигураций.
Пользователи смешивать подключений во время одного сеанса входа в систему. Например пользователям вход с помощью удаленного рабочего стола (RDC) и позже подключиться напрямую без первого выхода.
Отображение сведений о определяется при входе пользователя в систему. Процесс входа выхода сбрасывает сведения об отображении и улучшает поведение. Однако проблема повторяется при изменении конфигурации монитора во время одного сеанса входа в систему при закрепить или отменить закрепление устройства, или отсоединения внешнего монитора.
Эта проблема становится распространена, поскольку мониторы введение 4 КБ и более высокое разрешение, особенно когда эти мониторы смешиваются с старых стандартных мониторов.
Дополнительные сведения о как масштабирование приложений Windows см блог основные группы:
Решение
Чтобы решить эту проблему, используйте следующие методы.
Проверка наличия обновлений программного обеспеченияУсовершенствования постоянно добавляются к Windows 10 и Office 2016 приложений. Если возникают определенные проблемы, сначала проверьте, исчезла ли он в последнем выпуске Windows или накопительного обновления. Чтобы проверить обновления Windows 10, обратитесь к следующей статье Microsoft Knowledge Base:
Соответствующие разрешения экранаСледует рассмотреть возможность развертывания мониторы с дополнительными разрешениями.
При использовании нескольких мониторов (в том числе закрепить или подключиться к удаленным экраны), может вызывать проблемы, которые возникают больше различием в разрешении внешних устройств и устройств на машинном коде. Дополнительные сведения см. ниже OneDrive презентации:
Использование приложений UWPИспользовать или развертывать приложения универсальной платформой Windows (UWP) вместо приложений Win32.
Современные приложения (UWP) всегда масштабируются правильно. При наличии сопоставимых современных приложений, можно использовать приложение для решения проблем масштабирования. Например граница является современный приложение, которое не вызывает масштабирование проблем, которые могут возникнуть в Internet Explorer. Аналогичным образом удаленный рабочий стол является альтернативой mstsc.exe.
Проверка наличия известных проблемДополнительные сведения об известных проблемах в этих конкретных продуктов см.
Примечание. Приложения Office 2016 запуска которых выпущены, начиная с сентября 2016. Дополнительные обновления планируется выполнить.
Изменения отображения окна Internet Explorer 11 3165808 между монитор встроенных устройств и внешнего монитора
Временное решение
Для временного решения проблемы масштабирования, попробуйте следующие способы:
Настройка параметров экрана Windows 10
Выберите Показать > Изменить размер текста, приложений и других элементови затем перетащите ползунок для каждого монитора.
Систем Windows предыдущих версий
Щелкните правой кнопкой мыши приложение, выберите команду Свойства, перейдите на вкладку Совместимость и установите флажок Отключение масштабирования изображения при высоком Разрешении экрана .
Изменение свойств приложенияВ проводнике или в меню «Пуск» щелкните правой кнопкой мыши имя приложения, выберите Свойства, выберите вкладку Совместимость и установите флажок Отключение масштабирования изображения при высоком Разрешении экрана .
В Windows 1703 версии 10 и более поздней версии Windows, текст параметр отключить масштабирование экрана при высоком Разрешении экрана изменяется на масштабирование выполняется переопределение высокое разрешение DPI, поведение,: приложение.
Проверьте, является ли приложения, поддерживающего DPIЧтобы определить поддержку масштабирование приложения, выполните следующие действия.
В программе Process Explorer щелкните столбцы и затем добавить столбец Осведомленность точек на ДЮЙМ в представление.
Запустите приложение, которое требуется проверить.
В программе Process Explorer найдите приложение и затем просмотрите столбец Поддержка точек на ДЮЙМ .
Определения состояния осведомленности точек на ДЮЙМ
Каждого монитора помнить: Монитор на дюйм. Эти приложения проверьте DPI при запуске и настраивает масштаб всякий раз, когда изменяется значение DPI. Эти приложения не масштабируется автоматически системой.
Виду системы: Система дюйм. Эти приложения не масштабируются для изменения точек на ДЮЙМ. Запрашивать разрешение DPI один раз, а затем использовать это значение в течение времени жизни приложения. В случае изменения DPI приложения не корректирует значение точек на ДЮЙМ. Он будет автоматически масштабироваться вверх или вниз в системе при изменении DPI с системным значением.
Знают: привязанные точек на ДЮЙМ. Эти приложения не масштабируются для изменения точек на ДЮЙМ. Они всегда предполагается, что у масштаба 100 процентов (96 точек на ДЮЙМ). Эти приложения масштабируются автоматически системой при Разрешении экрана.
Дополнительные сведения см. в следующем разделе MSDN:
Сообщить о проблемеМногие элементы пользовательского интерфейса были обновлены из-за отзывов клиентов. Поскольку проблемы масштабирование может включать несколько симптомов и конфигурации, сведения от пользователей может помочь нам определить конкретные ситуации и определения приоритетов в разработке обновлений.
Чтобы обеспечить такие отзывы, выполните следующие действия.
Запись конфигурации монитора. Для этого сделать снимок экрана окна (Пуск > настройки > Система > отображения).
Обратите внимание, для каждого монитора, марки и модели, масштабирования процент и разрешение.
Запишите действия, которые необходимо выполнить, чтобы воспроизвести проблему.
До и после масштабирования проблемы принимают снимки экрана или видеозапись рабочего стола и приложений.
Запустите DXDiag.exe в системе.
Выберите Пуск > обратная связь концентратора. Поиск по «DPI», чтобы проверить, соответствует ли все перечисленные проблемы вашей проблеме. Если соответствие найдено, можно добавить дополнительный отзыв, включая снимки экрана, результаты DXDiag и другие необходимые сведения.
Дополнительные сведения
Масштабирование экрана является обманчиво сложной задачей. Нет, магия маркера или одного исправления для решения всех проблем масштабирование. Масштабирование DPI преимущества непрерывного улучшения ядра операционной системы, модели разработки приложений и приложений корпорации Майкрософт и сторонних производителей.
Различные версии Windows и модели разработки приложений имеют другое отображаемое возможности масштабирования и ограничения.
Например в Windows, выпущенных ранее Windows 8.1, рабочей среды и приложений понять только один коэффициент масштабирования, обычно на основании основной дисплей во время начала сеанса входа в систему. При изменении отображения во время сеанса входа в систему, растровые изображения системы масштабировать содержимое из коэффициент масштабирования системы для нового монитора коэффициент масштабирования. Это делает действительно содержимого не становится слишком велико или мало. Тем не менее текст может казаться размытыми. (Эффект — хуже при масштабировании). Если система сжимает или растягивает элементы пользовательского интерфейса для нужного размера, это может вызвать некоторые размытости в диалоговых окнах и других элементов пользовательского интерфейса.
В Windows 10 инвестиций были сделаны таким образом, большие части рабочего стола UX масштабируется недоставало в сценариях закрепление стыковку. Дополнительная масштабируемость были сделаны усовершенствования панели задач, проводник, значки на рабочем столе, контекстное меню и других элементов пользовательского интерфейса для повышения удобства работы пользователей.
Корпорация Майкрософт постоянно обновляя системы и приложений сторонних производителей первого. Сторонние приложения может потребоваться подобные инвестиции.
Ссылки
MSDN: Создание приложений Win32 с поддержкой точек на ДЮЙМ
Блог Турротт: 13 июля 2015 учет, касающейся масштабирование. Статья основана на главе «Устройства» поле 10 руководства по Windows.
Блог Windows: 15 июля 2013 года.
Построения 2015: Масштаб отображения: что это такое и нужно знать о его иметь отличный визуальных объектов
2014 построения: Улучшения платформы разработки настольных приложений Windows
Построения 2013: Создание приложения рабочего стола освещения дисплеи высокого Разрешения
Что это такое
Масштабирование — это изменение размеров элементов с сохранением пропорций
и исходного разрешения дисплея. В актуальных версиях Windows (10, 8.1 и 7) предусмотрена настройка шкалы масштаба в процентах. Нажмите правой кнопкой мыши на рабочем столе
и выберите «Параметры экрана». Откроется вкладка «Дисплей» системных настроек. Прокрутите вниз, пока не увидите опцию «Масштаб и разметка».
По умолчанию доступна настройка масштаба с шагом в 25 % (100, 125, 150, 175 % и далее). После изменения, возможно, придется перезапустить некоторые программы, а в особо запущенных случаях — даже перезагрузить систему. Приложение предупреждает об этом
в подсказке.
Если у вас Windows 7 или 8.1, кликните правой кнопкой мыши на свободном месте рабочего стола и выберите «Разрешение экрана». В появившемся окне жмите опцию «Изменение размеров текста и других элементов». Появятся аналогичные варианты масштабирования.
В каких случаях понадобится
Функция масштабирования стала актуальной в последнее десятилетие — с появлением 2K-
и 4K-дисплеев. У монитора есть характеристика PPI (англ. pixels per inch) — это количество пикселей на один дюйм экрана или разрешающая способность. Чтобы его посчитать, нужно знать диагональ монитора и исходное разрешение матрицы.
Воспользуемся теоремой Пифагора и узнаем его для 27-дюймового дисплея. Если вам лень вычислять вручную, можете обратиться к онлайн-калькуляторам. При разрешении 1920×1080, получаем 82 пикселя на дюйм. Если у такой же матрицы будет разрешение 2560×1440,
то плотность составит 109 PPI. А при 4K (3840×2160) получаем уже 163 PPI.
В последнем случае из-за высокой плотности изображение на экране будет слишком мелким — можно применить масштаб 175 или 200 %. При этом изменится DPI (англ. dots per inch) — виртуальный параметр, который отражает изменения размера элементов изображения. При масштабе 100 % PPI и DPI совпадают.
Если компьютерные мониторы со сверхвысоким разрешением пока не так популярны,
то подавляющая часть современных телевизоров уже выпускается с 4K-разрешением. Плотность пикселей здесь существенно меньше из-за размеров экрана (например, для 65-дюймового ТВ это будет всего 68 PPI).
Но стоит учитывать, что телевизор вы смотрите не вплотную, а с расстояния в несколько метров. Например, если подключаете его к ПК или ноутбуку как второй монитор, рекомендуем также выставить увеличенный масштаб в диапазоне 175–225 %, чтобы текст на экране был читаемым.
Подводные камни
В Windows 10 был внедрен новый принцип изменения размера приложений. Если раньше
в системе было четыре фиксированных типа DPI (96, 120, 144 и 192), то в «десятке» программа обязана уметь масштабироваться под любой размер виртуального пикселя. Эту идею разработчики из Microsoft подсмотрели у коллег из Google. В системе Android приложения выглядят нормально на любом устройстве (будь то планшет, телефон или умный телевизор).
Прошло уже шесть лет с момента выхода «десятки», и большинство программ поддерживают функции «резинового» масштабирования и легко адаптируются под нужный размер. Проблемы могут возникать только со старыми утилитами, которые не обновлялись много лет.
Мы рекомендуем использовать современное ПО и скачивать последние версии с официальных сайтов разработчиков.
Советы по масштабированию
Если вы все-таки пользуетесь устаревшими программами, рекомендуем заглянуть в подраздел настроек «Дополнительные параметры».
Здесь можно активировать опцию «Исправление масштабирования», которая призвана устранить размытость в классических приложениях. Это так называемый «костыль», который не всегда правильно работает. Если совсем ничего не помогает, уберите масштабирование
в свойствах ярлыка конкретной программы:
Также в этом окне можно задать пользовательское значение DPI, если вас не устраивает стандартный ряд.
Поэкспериментируйте и подберите оптимальный размер изображения конкретно для вас.
Этот параметр ничего не меняет. Приложение по-прежнему отображается как 120 DPI, а не 96 DPI. Я также проверил это на новой, не испорченной Windows 7 на виртуальной машине - такое же поведение.
Вопрос в том, как заставить одно приложение использовать 96 DPI другим, РАБОЧИМ, способом?
Перейдите в «Панель управления \ Оформление и персонализация \ Отображение» и нажмите «Установить пользовательский размер текста (DPI)». Убедитесь, что флажок "Использовать масштабирование DPI в стиле Windows XP" НЕ установлен. Выйдите, чтобы применить изменения, если это необходимо.
Вместо того, чтобы выбирать параметры совместимости самостоятельно, запустите мастер и позвольте Windows выбрать его для вас. Вы можете сделать это, щелкнув правой кнопкой мыши значок программы и выбрав в меню "Устранение неполадок совместимости". Это исправило отсечение дисплея для меня. Текст немного нечеткий, но я могу жить с ним; Я просто счастлив, что вижу все это. :)
Я понимаю, что это очень старый вопрос, но я только что нашел решение. Переключите тему (Панель управления> Все элементы панели управления> Персонализация) с темы Aero на тему Basic, и масштабирование для каждого приложения будет работать.
просто предположение, но, может быть, если вы запустите приложение в режиме совместимости с XP или отключите настройки визуальной темы для этого приложения, оно проигнорирует настройки DPI?
Если вы обнаружите, что Disable display scaling on high DPI settings недоступен для 64-разрядного приложения, например:
В вышеупомянутом ответе пользователь Ben N подробно расскажет о логике и инфраструктуре Windows для работы с "несовместимыми" приложениями. Его процедура позволяет мне управлять совместимостью по сигнатуре приложения, так что даже если я обновлю приложение и его номер версии и / или изменения в реестре, я все еще буду защищен.
Например, вот моя подпись для Rainmeter 3.3.0.2519:
Когда я обновил Rainmeter, это перестало работать. Поэтому я создал новую подпись без номеров версий:
У меня Windows 7 с масштабированием DPI до 120 DPI. Это создает некоторые проблемы с более старыми приложениями, такими как обрезанный текст, размытая графика или слишком большой текст.
Я хотел бы отключить масштабирование DPI для этих приложений. Я пробовал это: применение.exe "контекстное меню - > Свойства - > compatibilty - > отключить масштабирование дисплея на высоких настройках DPI".
этот параметр ничего не меняет. Приложение по-прежнему отображается как 120 точек на дюйм, а не как 96 точек на дюйм. Я также проверил его на свежий, не перепутались Windows 7 на виртуальной машине-такое же поведение.
вопрос: как заставить одно приложение использовать 96 DPI другим, рабочим, способом?
У меня просто была такая же проблема, и выбор любого из флажков не имел никакого значения. Это то, что я сделал, что это исправлено:
перейдите в " Панель управления\внешний вид и персонализация\дисплей "и нажмите на опцию" Установить пользовательский размер текста (DPI)". Убедитесь, что флажок" Использовать масштабирование DPI в стиле Windows XP " не установлен. При необходимости выйдите из системы, чтобы применить изменения.
вместо выбора параметров совместимости, запустите мастера и позволить Windows выбрать его для вас. Это можно сделать, щелкнув правой кнопкой мыши значок программы и выбрав в меню пункт "устранение неполадок совместимости". Это исправило обрезку дисплея для меня. Текст немного размытый, но с этим я могу жить, я просто счастлив, что могу видеть все это. :)
Я понимаю, что это очень старый вопрос, но я только что нашел решение проблемы. Переключите тему (Панель управления > все элементы панели управления > Персонализация)с темы Aero на основную тему, и масштабирование дисплея для каждого приложения будет работать.
просто предположение, но, может быть, если вы запустите приложение в режиме совместимости xp, или, возможно, отключить настройки визуальной темы для этого приложения, он будет игнорировать настройки DPI?
ответ мастселлера (1. ответ) работает, но много текста приложения становятся размытыми :(. Но теперь работает флажок "Использовать масштабирование DPI в стиле Windows XP". Поэтому, если есть какое-то приложение, где нечеткое в правом возмущении, чем малый размер, сделайте это: 1) Поиск стартового файла приложения (.exe .com) в файловом менеджере, или это значок (или, если приложение работает, вы можете найти его в диспетчере задач windows тоже). 2) щелкните правой кнопкой мыши на нем и нажимаем на свойства. 3) Нажмите на Вкладка совместимость. 4) Установите флажок" Использовать масштабирование DPI в стиле Windows XP". 5) перезапустите приложение (оно работает).
вы должны сделать со всем нечетким применением по-одному, но оно работает.
Если вы нашли свой Disable display scaling on high DPI settings флажок неактивен для 64-разрядного приложения, например:
в вышеупомянутом ответе пользователь Ben N предоставляет обширное представление о логике и структуре Windows для работы с "несовместимыми" приложениями. Его процедура позволяет мне управлять совместимостью с помощью подписи приложения, так что даже если я обновляю приложение и его номер версии и/или изменения записи реестра, я все еще покрыт.
например, вот моя подпись для Rainmeter 3.3.0.2519:
когда я модернизировал Rainmeter, это перестало работать. Так я создал новая подпись без номеров версий:
Windows, начиная с Vista, предоставляет два механизма для адаптации приложений к мониторам с высокой плотностью пикселей (точек на дюйм, DPI): увеличенные системные шрифты и полномасштабное увеличение окон. К сожалению, попытка заставить некоторые ваши приложения работать в каком либо из режимов может оказаться безуспешной, благодаря сочетанию нерадивых разработчиков и плохих решений принятых Microsoft.
От переводчика
В этой статье применяются следующие сокращения которые я счел переводить не целесообразно: Графический Интерфейс Пользователя (GUI), Точек На Дюйм (DPI), DPI-Aware приложения – приложения которые умеют при различных значениях DPI правильно, без искажений отображать свой GUI, Графический Интерфейс Устройства (GDI). Мои комментарии (выделены курсивом).
Методы масштабирования
- Функции Графического Интерфейса Устройства (GDI) для доступа к дисплею. Как правило, GDI координаты измеряются непосредственно в пикселях экрана независимо от размера монитора и плотности пикселей.
- И вывод текста используя системные шрифты Windows. Это не является обязательным, но большинство приложений использует системные шрифты для большей части их графического интерфейса пользователя (GUI).
Масштабирование в стиле Windows XP
Первый из этих методов, как можно догадаться, появился в Windows XP. Этот метод, на самом деле, не является методом масштабирования приложений с графическим интерфейсом как таковой. Масштабируются, при более высоких настройках DPI, только системные шрифты и некоторые элементы пользовательского интерфейса системы (я бы назвал его «метод НЕ масштабирования» в стиле Windows XP).
Все остальные элементы приложений по-прежнему отображаются в масштабе 1:1. Единственной разницей в их внешнем виде является то, что любой текст и некоторые элементы GUI, выводимые с помощью системных функций, вдруг становиться больше. Например, текст на кнопках. Это вызывает очевидные проблемы которые мы обсудим чуть позже.
Масштабирование в стиле Windows Vista или DPI виртуализация
Windows Vista представила второй вариант со странным названием, «масштабирование дисплея», без каких-либо уточнений, видимо, чтобы окончательно запутать пользователей. Мы будем использовать более описательное имя – метод DPI виртуализации. Когда этот метод включен, Windows по-прежнему выполняет масштабирование в стиле Windows XP. Также как и прежде размеры всех системных шрифтов и некоторых элементов интерфейса системы увеличиваются.
Разница в том, что приложения, которые могут правильно использовать высокие значения DPI, должны сообщить об этом Windows. Такие приложения должны установить новый DPI-Aware флаг, либо путем вызова функции Win32 API «SetProcessDPIAware», или, предпочтительно, путем встраивания манифеста с флагом dpiAware. А вот если у приложения отсутствует DPI-Aware флаг, Windows ведет себя по другому, сначала она формирует внутреннее отображение в масштабе 96 точек на дюйм (эмулируя для приложения DPI равный 96), а затем, масштабирует полученное изображение в соответствие с текущими настройками DPI перед выводом на экран.
Это было бы фантастическим метод масштабирования если бы все наши мониторы имели плотность пикселей последних аппаратов iPhones (326 точек на дюйм). К сожалению это не так. Окна приложений масштабированные таким образом выглядят чересчур размыто, при популярном разрешении 120 точек на дюйм (@homm это не разрешение, кстати). Поэтому, Microsoft по умолчанию отключает DPI виртуализацию, если вы выберете плотность пикселей меньше или равную 120 DPI.
Как изменить установки DPI
В Windows 7/8, откройте «Панель управления», a затем выберите «Оформление и персонализация», затем «Экран», и, наконец, выберите «Установить размер шрифта (DPI)» (Windows 7) или «Пользовательские параметры размера» (Windows 8). Вы увидите следующее диалоговое окно (Windows 7, в Windows 8 почти идентично):
В раскрывающимся списке можно выбрать нужную настройку DPI в процентном соотношении, где 100% соответствует 96 DPI, 125% — как на скриншоте, соответствует 120 точкам на дюйм (можно более точно записать значение вручную). До Windows 8 фактическое значение DPI («пикселей на дюйм») отображалось рядом с размером системного шрифта. Windows 8, по непонятным причинам, не показывает значение DPI, так что вы должны рассчитать его самостоятельно.
Также вы можете приложить линейку (у которой есть шкала в дюймах) к экрану, и пытаться совместить маркировку на ней с маркировкой на экране, изменяя значение в раскрывающимся списке. Флажок, обведенный красным внизу, определяет, следует ли использовать только масштабирование в стиле Windows XP, или также новый способ DPI виртуализации. Если флажок не отмечен, как на скриншоте, то DPI виртуализация включена.
Декламация. Это диалоговое окно пример интерфейса не дружественного к пользователю. На первый взгляд кажется, что это флажок для отключения масштабирования в стиле Windows XP. Но этот метод масштабирования (который только увеличивает системные шрифты и другие элементы пользовательского интерфейса системы — масштабирование Windows XP) всегда включается при выборе высокого значения DPI. На самом деле этот флажок управляет, будет ли этот метод единственным (Использовать только масштабы в стиле Windows XP), или также будет применен метод «DPI виртуализации» для приложений, которые не имеют DPI-Aware флага. Так что этот флажок не контролирует метод масштабирования указанный в его название, а контролирует другой метод масштабирования, нигде не упомянутый — и позволяет использовать новый метод, когда флажок снят!
Ошибка в Windows 8. В дополнение к этому, в Windows 8 это диалоговое окно с ошибкой. Как правило, все работает как и в Windows 7, но состояние флажка не сохраняется на значениях DPI 150% и выше. Когда вы устанавливаете этот флажок, «DPI виртуализация» правильно отключается. Тем не менее, сам флажок остается не отмеченным, когда вы в следующий раз открываете этот диалог.
Изменения в Windows 8.1, или почему все размыто?
В Windows 8.1 флажок для масштабирования в стиле Windows XP исчез, и теперь «DPI виртуализация» никогда, не используется при значениях DPI до 120 включительно, но всегда используется при более высоких значениях для тех программ, у которых отсутствует DPI-Aware флаг. Если некоторые приложения кажутся вам нечеткими, необходимо вручную отключить для них DPI виртуализацию.
Windows 8.1 позволяет использовать несколько мониторов с разным значением DPI. Однако эта функция, также заставляет использовать «DPI виртуализацию» для традиционных приложений, которые перемещаются между мониторами с разными значениями DPI. Чтобы этого избежать, можно отключить в настройках «DPI масштабирование», используя новую опцию «Я хочу выбрать один масштаб для всех дисплеев».
Также Windows 8.1 добавляет специальный переключатель для настройки 200% и новый API, чтобы разработчики могли выборочно отключать «DPI виртуализацию».
Помогите, мои системные шрифты не правильного размера!
Иногда, после изменения настроек DPI, вы можете заметить что некоторые системные шрифты стали слишком большими или слишком маленькими для новых установок. Вероятной причиной является то, что вы используете пользовательскую тему рабочего стола на основе ваших старых настроек DPI. Windows не масштабирует шрифты пользовательской темы.
Если вы на самом деле создали пользовательскую тему рабочего стола и хотите сохранить её, вам придется самостоятельно адаптировать шрифты к новым настройкам DPI. Однако, Windows имеет раздражающую привычку «услужливо» создавать пользовательские темы без вашего ведома, по какой-либо причине. Так что, если вы никогда не создавали пользовательскую тему рабочего стола просто удалите её и вернитесь к стандартной теме.
В Windows 7/8, откройте Панель управления, выберите «Оформление и персонализация», а затем «Персонализация». Если вы видите выбранную запись в строке «Мои темы», это означает, что ОС Windows использует тему пользователя, системные шрифты которой Windows не будет масштабировать. Выберите стандартную тему, например, первую запись в разделе «Темы Aero» (Windows 7) или «Windows» «Темы по умолчанию» (Windows 8) и удалите нежелательные записи в разделе «Мои темы». Теперь, все системные шрифты должны отображаться правильно.
Типы приложений, как они масштабируются (или не масштабируются)
Теперь давайте рассмотрим какие методы должны использоваться для существующих Windows приложений при высоких значениях DPI. Следующая таблица обобщающая, позже мы рассмотрим различные случаи более подробно.
DPI-Aware флаг не установлен | DPI-Aware флаг установлен | |
Не DPI-Aware | Нужно использовать DPI виртуализацию | Нужны исправления от разработчиков |
DPI-Aware | Нужно использовать масштабирование в стиле Windows XP | Всегда масштабируется правильно |
Приложения вообще не заботящиеся о DPI — это либо очень старые или плохо написанные, но, тем не менее, по-прежнему используемые. Одним известным примером является ITunes от Apple для Windows. Здесь разработчики используют системные шрифты для GUI и, не заботясь о фактических размерах шрифта, они жестко привязывают размеры окон к разрешению 96 DPI, естественно искажая GUI, когда при более высоких значениях DPI увеличиваются размеры шрифтов.
Такие приложения требуют нового метод масштабирования «виртуализации DPI», к сожалению, это часто делает интерфейс размытым. В противном случае вы столкнетесь с проблемами начиная, от обрезания текста до перекрытия элементов контроля, иногда, делая GUI полностью непригодным (к счастью, это, случается редко). За эти годы я собрал несколько образцов скриншотов не корректных приложений.
разрешение 150% (144 DPI)
Приложения умеющие подстраивать свой GUI под различные значения DPI, но не имеющие DPI-Aware флага — Это типичные приложения эпохи Windows XP. Здесь разработчики позаботились, чтобы получить фактические размеры шрифтов системы перед созданием GUI. Такие приложения отображаются корректно при использование масштабирования в стиле Windows XP. К сожалению, так как они не устанaвливают DPI-Aware флаг, чтобы сообщить Windows этот факт, для них, по умолчанию, будет использована «DPI виртуализация», делая их GUI нечетким. Это может вам не понравиться, так что, вы, возможно, захотите принудительно использовать стиль масштабирования Windows XP для таких приложений.
Пример такого приложения и разрешение 150% (144 DPI)
Приложения умеющие подстраивать свой GUI под различные значения DPI, имеющие DPI-Aware флаг — Это новейший тип приложений которые полностью беспроблемны, независимо от настроек DPI. DPI-Aware флаг установлен автоматически для Windows Presentation Foundation (WPF) и GDI+ приложений, так как эти APIs предоставляют встроенные средства масштабирования. Разработчикам использующим старый GDI API и (удивительно) Windows Forms, нужно вручную помечать свои DPI-Aware приложения.
Выбор метода масштабирования для ваших приложений
После того как вы решили что вы хотите использовать высокое значение DPI, ваш выбор метода масштабирования зависит от приложений в которых вы работаете. Имейте в виду, что, отключить «DPI виртуализацию» означает, установить флажок (check box) с некорректным названием «Использовать масштабы в стиле Windows XP» и наоборот.
- Если вам так невероятно повезло использовать только те приложения, которые являются одновременно DPI-Aware и устанавливают нужный флаг, тогда не имеет значения какой метод масштабирования вы выберете. Все приложения будут использовать масштабирование в стиле Windows XP, а DPI виртуализация никогда не будет использоваться.
- Если вы используете только хорошо написанные DPI-Aware приложения, но некоторые из них не устанавливают необходимый флаг, вы можете отключить «DPI виртуализацию». Таким образом, все приложения будут отображаться правильно без какого-либо замыливания вследствие масштабирования. Если ваш монитор имеет очень высокую плотность пикселей, такую, что масштабированные растровые изображения больше не выглядят размытыми, вы, возможно, захотите включить DPI виртуализацию в любом случае.
- Если у вас есть одно или несколько приложений не приспособленных к изменению DPI и не имеющие DPI-Aware флага, необходимо включить DPI виртуализацию, если вы не готовы мириться с перекошенным GUI приложений. К сожалению, тут возникает еще одна проблема, потому что, Microsoft реализовала эту опцию неудобно. Вы можете включить DPI виртуализацию только для всей системы, а не для отдельного приложения, а затем выборочно отключать для отдельных приложений.
Напоминаем, что в Windows 8.1 уже нет возможности выбора в этом вопросе. Если вы работаете при разрешении в 120 точек на дюйм (125%), каждая программа будет вынуждена использовать масштабирование в стиле Windows XP, a если вы работаете с более высоким разрешением, каждая программа, которая не является DPI-Aware, будет использовать по умолчанию «DPI виртуализацию».
Отказ от DPI виртуализации для отдельных приложений
После того как вы решили включить DPI виртуализацию или вы работаете в Windows 8.1, с разрешением более чем 120 точек на дюйм, вы можете проверить систему на предмет наличия DPI-Aware приложений, которые не имеют соответствующий флаг. И вернуть им возможность использовать масштабирование в стиле Windows XP, для которого они предназначены. Есть два способа сделать это, первый работает только для 32-разрядных приложений, второй универсален и подходит также для 64-битных приложений.
32-разрядные приложения — Это просто: щелкните правой кнопкой мыши на исполняемом файле в Проводнике Windows, выберите диалоговое окно «Свойства», перейдите на вкладку «Совместимость» и установите флажок «Отключить масштабирование изображения при высоком разрешении экрана». Вот и все, в Windows 8.1 это также работает для 64-битных приложений.
64-разрядные приложения — Без всякой видимой причины, возможно чтобы позлить пользователей 64-битных приложений, в Windows 8 и более ранних, упомянутый выше флажок, для 64-разрядных приложений отключен, хотя сам вариант вполне функционален, если внести изменения непосредственно реестр! Так что, запустите редактор реестра и перейдите к этому ключу:
Теперь добавьте строковое значение (REG_SZ), чье имя является полным путем к исполняемому файлу приложения и значением которого является HIGHDPIAWARE. Я рекомендую, чтобы вы сначала изменили несколько 32-битных приложений, как описано выше, чтобы вы могли увидеть некоторые примеры значений в этом ключе реестра.
Мы рассмотрели, как можно использовать настройки DPI на Windows Vista и более поздних версиях. И если вы когда-нибудь задумывались, для чего предназначена опция совместимости — «Отключить масштабирование изображения при высоком разрешении экрана». И почему она ничего не делает на вашей системе, теперь вы знаете: она эффективна, только если у вас включена общесистемная опция «DPI виртуализации» и только для приложений, которые не устанавливают DPI-Aware флаг должным образом, но при этом корректно используют масштабирование в стиле Windows XP.
Дальнейшее чтение
For more information about both scaling methods from a developer perspective, see the MSDN article Writing High-DPI Win32 Applications. This content has moved to Writing DPI-Aware Desktop and Win32 Applications. This lengthy article also contains a sample manifest to declare an application as DPI-aware, as well as sample screenshots for the various scaling methods and tips on display scaling in native code.
Unfortunately, the article currently only covers Windows XP through 7. See Writing DPI-Aware Desktop Applications in Windows 8.1 Preview (Word DOCX) and Chuck Walbourn’s Manifest Madness for additional information on Windows 8 and 8.1.
Outside of Microsoft, Gastón Hillar has published two articles targeting Windows 8.1 at Dr. Dobb’s. Part 1 covers basic concepts, and part 2 shows C/C++ sample code for the Win32 API.
Читайте также: