开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 407|回复: 13
收起左侧

[技术专题] 一文讲清楚高分屏DPI缩放模糊解决方法与存根清单设置

[复制链接]
发表于 2024-12-9 13:49:18 | 显示全部楼层 |阅读模式   北京市北京市
翻遍了论坛所有有关dpi缩放的帖子,解决方法很多,有引入第三方dpi缩放模块的,我所有模块都试过了,要么是必须在程序初始指定缩放比例,不能响应系统设置的dpi缩放,例如这个DPI适应_精易论坛要么就是能响应系统设置的dpi缩放,但部分组件有问题,超级列表框高度变低,菜单栏图标高度变低,例如这个QSSmartScale 自动界面缩放+完整字体缩放 完整DPI支持_精易论坛,引入模块的方法始终是不完美的。其中还有别的方法,就是给应用程序的属性设置高DPIdpi缩放行为为“系统(增强)”

这种方法固然有效,但你不能每次都手动设置吧,而且只要移动位置或者改名就得重新设置,发给别人用也得重新设置,这其实是在系统有关dpi缩放的注册表添加了一个文件路径,告诉系统以“系统(增强)”的方式缩放程序,因此呢还有人,在程序开始的时候自动写入注册表,程序结束的时候自动删除注册表,嗯...感觉有点不必要,频繁操作注册表实在不是明智行为。
论坛也有不少设置存根清单的帖子,但设置完都是禁用dpi缩放了,清晰是清晰了,但也窗口变小了,大小也不能跟系统缩放了,这样不同屏幕适应性太差。
然后我研究了一下微软官方的文档,得出一个结论
        <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>
存根清单里的这个<windowsSettings>部分是关于DPI缩放设置的,第一条<dpiAware>是在较旧的系统上win8.1之前的系统上启用dpi感知,<dpiAwareness>  在win8.1之后的系统上启用dpi感知,
但是易语言程序过于古老,当初设计不支持高DPI,仅启用这两行是不够的,微软为了不支持高dpi的程序提供了一个“系统(增强)”的设置,那就是第三条<gdiScaling>,设置了这一条后,编译后的程序自带“系统(增强)”属性,不用再手动设置,或者用其他软件设置。
附上一个完整的存根清单,设置了这个即可支持高分辨率屏幕dpi缩放且不模糊。
[XML] 纯文本查看 复制代码
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
    <application>
        <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>
<dependency>
    <dependentAssembly>
        <assemblyIdentity
            type="win32"
            name="Microsoft.Windows.Common-Controls"
            version="6.0.0.0"
            processorArchitecture="x86"
            publicKeyToken="6595b64144ccf1df"
            language="*"
        />
    </dependentAssembly>
</dependency>
<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
      <application> 
          <!--Windows Vista -->
          <supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"/>
          <!--Windows 7 -->
          <supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/>
                  <!--Windows 8 -->  
                  <supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"/>
                  <!-- Windows 8.1 -->             
          <supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}"/>   
          <!-- Windows 10, Windows 11 -->              
          <supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}"/>    
      </application>
</compatibility>
</assembly>

点评

使用这个存根,就无法选择以管理员权限启动了,请大佬修复   辽宁省大连市  发表于 2024-12-9 21:16

评分

参与人数 2好评 +1 精币 +4 收起 理由
夜的静night + 1 + 2 YYDS~!
dangerace + 2 貌似有效,我请朋友帮忙测试了

查看全部评分


本帖被以下淘专辑推荐:

结帖率:100% (1/1)

签到天数: 22 天

发表于 7 天前 | 显示全部楼层   河北省张家口市
感谢分享,很给力!~
回复 支持 反对

使用道具 举报

结帖率:100% (1/1)

签到天数: 22 天

发表于 7 天前 | 显示全部楼层   河北省张家口市
好东西,感谢楼主分析,收藏了
回复 支持 反对

使用道具 举报

结帖率:100% (6/6)

签到天数: 12 天

发表于 2024-12-13 10:59:35 | 显示全部楼层   北京市北京市
感谢分享好用
回复 支持 反对

使用道具 举报

结帖率:100% (1/1)

签到天数: 22 天

发表于 2024-12-13 05:48:37 | 显示全部楼层   河北省张家口市
精彩文章希望继续努力
回复 支持 反对

使用道具 举报

结帖率:80% (4/5)

签到天数: 22 天

发表于 2024-12-12 22:43:21 | 显示全部楼层   广东省东莞市
李商隐2 发表于 2024-12-10 12:47
true  
          PerMonitorV2, system  
          true   

这个清单有bug win10  (桌面右键>显示设置>缩放布局>设置125%)  软件的组合框会变得看不见 可以修复一下吗
回复 支持 反对

使用道具 举报

结帖率:95% (19/20)

签到天数: 21 天

发表于 2024-12-10 14:43:11 | 显示全部楼层   河南省商丘市
哪一份是最后的修复版?请以代码形式贴出来吧,这样太乱了。
回复 支持 反对

使用道具 举报

签到天数: 1 天

 楼主| 发表于 2024-12-10 12:47:24 | 显示全部楼层   北京市北京市
dangerace 发表于 2024-12-9 21:10
大佬,发现个问题,烦请您一并修复。
使用了您的存根,就无法选择程序以管理员权限启动了,这样就造成我的 ...

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
    <application>
        <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>
<dependency>
    <dependentAssembly>
        <assemblyIdentity
            type="win32"
            name="Microsoft.Windows.Common-Controls"
            version="6.0.0.0"
            processorArchitecture="x86"
            publicKeyToken="6595b64144ccf1df"
            language="*"
        />
    </dependentAssembly>
</dependency>
<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
      <application>
          <!--Windows Vista -->
          <supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"/>
          <!--Windows 7 -->
          <supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/>
                  <!--Windows 8 -->  
                  <supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"/>
                  <!-- Windows 8.1 -->            
          <supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}"/>   
          <!-- Windows 10, Windows 11 -->              
          <supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}"/>   
      </application>
</compatibility>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
<requestedPrivileges>
        <requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
</requestedPrivileges>
</security>
</trustInfo>
</assembly>
回复 支持 反对

使用道具 举报

签到天数: 1 天

 楼主| 发表于 2024-12-10 12:47:06 | 显示全部楼层   北京市北京市
李商隐2 发表于 2024-12-9 22:03
可以改的,一会发出来

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
    <application>
        <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>
<dependency>
    <dependentAssembly>
        <assemblyIdentity
            type="win32"
            name="Microsoft.Windows.Common-Controls"
            version="6.0.0.0"
            processorArchitecture="x86"
            publicKeyToken="6595b64144ccf1df"
            language="*"
        />
    </dependentAssembly>
</dependency>
<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
      <application>
          <!--Windows Vista -->
          <supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"/>
          <!--Windows 7 -->
          <supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/>
                  <!--Windows 8 -->  
                  <supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"/>
                  <!-- Windows 8.1 -->            
          <supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}"/>   
          <!-- Windows 10, Windows 11 -->              
          <supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}"/>   
      </application>
</compatibility>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
<requestedPrivileges>
        <requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
</requestedPrivileges>
</security>
</trustInfo>
</assembly>
回复 支持 反对

使用道具 举报

签到天数: 1 天

 楼主| 发表于 2024-12-9 22:03:19 | 显示全部楼层   北京市北京市
dangerace 发表于 2024-12-9 21:10
大佬,发现个问题,烦请您一并修复。
使用了您的存根,就无法选择程序以管理员权限启动了,这样就造成我的 ...

可以改的,一会发出来
回复 支持 反对

使用道具 举报

结帖率:64% (25/39)

签到天数: 18 天

发表于 2024-12-9 21:10:01 | 显示全部楼层   辽宁省大连市
大佬,发现个问题,烦请您一并修复。
使用了您的存根,就无法选择程序以管理员权限启动了,这样就造成我的程序无法正常运行(是的,我的程序必须以管理员权限启动)
这点能不能在存根中进行修复或者添加?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表