本帖最后由 Damon233 于 2023-1-8 22:02 编辑
注:Windows 10 1703开始才支持DPI混合模式!低于该版本的Windows我还没有测试过。。。
易语言编译出来的程序在高DPI下显示模糊,一直困扰着各位,在研究易语言时发现了一个方式,可以做到不用模块,不用支持库,不用多写代码,只要稍加修改易语言配置就可以使编译出来的程序支持
懒得发图,但各位可以尝试打开非原生支持高DPI的软件的属性 -> 兼容性 -> 更改高DPI设置中,选中“替代高DPI缩放行为” ,然后换成“系统(增强)”,保存设置以后再打开软件就会发现清晰很多,并且UI显示也是正常的
但是考虑到属性的内容是看desktop.ini的,一旦重命名或者移动,就会失效,很麻烦,所以按照以下方法,可以说时一劳永逸,并且也可以方便他人!

正片:
打开易语言,在顶部菜单栏选择“T.工具”,在出现的菜单中选择“O.系统配置”,弹出的窗口中选择“存根”,选择“使用用户自定义清单”,在编辑框填入以下内容:
[XML] 纯文本查看 复制代码 <?xml version="1.0" encoding="utf-8"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity name="App" processorArchitecture="x86" version="5.2.0.0" type="win32"/>
<dependency>
<dependentAssembly>
<assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" processorArchitecture="x86" publicKeyToken="6595b64144c*f1df" language="*"/>
</dependentAssembly>
</dependency>
<application xmlns="urn:schemas-microsoft-com:asm.v3">
<windowsSettings>
<dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true</dpiAware>
<dpiAwareness xmlns="http://schemas.microsoft.com/SMI/2016/WindowsSettings">PerMonitorV2, system</dpiAwareness>
<gdiScaling xmlns="http://schemas.microsoft.com/SMI/2017/WindowsSettings">true</gdiScaling>
</windowsSettings>
</application>
</assembly>
“publicKeyToken="6595b64144c*f1df"” 中的 * 替换成 c,否则编译后可能无法打开软件
保存以后生效,但是在调试过程中是不会有任何效果的,需要你编译!
使用这个方案,好处是图片被缩放,但是文本以及组件是很清晰的,如果你的软件有大量小尺寸图片可以考虑,但缺点就是相比“应用程序”方案保存的软件而言,字体似乎很粗,并且像单选框等看着很奇怪

如果你想获取更好的体验,可以看看 https://bbs.125.la/forum.php?mod=viewthread&tid=14455580 的方案,但是需求就是你要使用大尺寸图片,像使用易语言的工具条这种强制小尺寸的可以不考虑这个方案
第一次发帖,写的可能不太好,见谅~
补充内容 (2023-1-10 12:52):
补充一下,代码框下面的提示一定要看!不然可能无效。并且,如果你的程序用到了GDI+,DirectX这也将变得无效 |