У меня есть старое приложение, для которого я хочу использовать виртуализацию DPI в Windows 7 (также известную как размытое масштабирование формы ).Чтобы попробовать это в примере проекта, я сделал следующее:
- включить отображение текста 125% на компьютере с Windows 7
- отключил любой манифест для этого проекта
- читать
Monitor.PixelsPerInch
с результатом 120
Я пробовал кое-что, но мне не удалось получить результат 96
dpi здесь:
- used
<dpiAware>false</dpiAware>
во внутреннем или внешнем предоставленном манифесте - изменил настройки совместимости приложений
- изменил тему Windows
Я также подумал, что SetProcessDPIAware
называется где-то вVCL
.Я нашел System.win.HighDpi
, который содержит SetProcessDPIAware
в своем блоке инициализации, но этот блок не включен в мой минимальный образец.
Пример манифеста (настройка dpiAware
, похоже, игнорируется):
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
<requestedPrivileges>
<requestedExecutionLevel level="asInvoker" uiAccess="false"/>
</requestedPrivileges>
</security>
</trustInfo>
<application xmlns="urn:schemas-microsoft-com:asm.v3">
<windowsSettings>
<dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">False</dpiAware>
</windowsSettings>
</application>
</assembly>