开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

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

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


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

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

查看: 13751|回复: 50
打印 上一主题 下一主题
收起左侧

[易语言纯源码] DPI适应

[复制链接]
结帖率:100% (3/3)
跳转到指定楼层
楼主
发表于 2019-9-9 01:47:50 | 只看该作者 |只看大图 回帖奖励 |正序浏览 |阅读模式   广东省汕头市
分享源码
界面截图:
是否带模块: 调用了模块
备注说明: -
本帖最后由 LLJ 于 2019-9-9 23:34 编辑

首先,DPI(Dots Per Inch)每英寸的像素点数。
现在的显示器像素点越来越精细,也越来越清晰,但是为什么有些程序字体模糊?下图是在DPI为120%,用易语言编译后运行的效果:


因为从Windows Vista开始引入了DPI Virtualization(DPI虚拟化)它会把不支持高DPI的窗口像图片一样缩放,所以看起来模糊。
可以调用 SetProcessDPIAware 告诉DPI虚拟化不要动我



但这样还没完全搞定,因为这个窗口是在DPI为120%设计的,到不同DPI运行界面会错乱。
需要自动调整控件大小,字体大小就不用管了,默认字体会随着DPI变化。
易语言本身不支持DPI适应,为此我开发了一个模块来支持DPI适应。
1.0版
源码.zip (6.31 KB, 下载次数: 76)

1.1版
更改 如果是弹出式窗口则计算并缩放客户区(排除边框、标题栏、菜单栏)。修复 先放大了组合框,再放大组合框内的编辑框导致大小出现问题,已改成先缩放子窗口,再缩放父窗口,这样父窗口会自动调整子窗口。 源码.zip (6.5 KB, 下载次数: 502)


另外:
易语言本身也不支持DPI,会被DPI虚拟化搞得很模糊,请右键e.exe  属性->兼容性->更改高DPI设置->勾选 代替高DPI缩放行为->应用程序->确定。
不推荐调用SetProcessDPIAware,因为XP没有这个函数,应该用清单来支持DPI,在易语言菜单栏->系统配置->存根->使用用户自定义清单
内容:
  1. <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
  2. <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">

  3. <!--如果不需要通用控件库6.0,删除以下代码-->
  4. <dependency>
  5.         <dependentAssembly>
  6.                 <assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" processorArchitecture="x86" publicKeyToken="6595b64144c*Fdf" language="*"/>
  7.         </dependentAssembly>
  8. </dependency>

  9. <!--如果不需要请求管理员权限,删除以下代码-->
  10. <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
  11.         <security>
  12.                 <requestedPrivileges>
  13.                         <requestedExecutionLevel level="highestAvailable" uiAccess="false"/>
  14.                 </requestedPrivileges>
  15.         </security>
  16. </trustInfo>

  17. <!--如果不需要支持DPI感知,删除以下代码-->
  18. <application xmlns="urn:schemas-microsoft-com:asm.v3">
  19.         <windowsSettings>
  20.                 <dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true</dpiAware>
  21.         </windowsSettings>
  22. </application>

  23. </assembly>
复制代码
上面的代码"6595b64144c*Fdf"把*改成c被论坛自动替换了

评分

参与人数 8好评 +7 精币 +11 收起 理由
空竹 + 1 新技能已get√
Yulent + 1 + 2 此处应该有鼓励~
流年浮生 + 1 支持开源~!感谢分享
易语言资源网 + 1 + 5 支持开源~!感谢分享
Terrell + 1 新技能已get√
峰生水起之林 + 1 + 1 感谢分享,很给力!~
啊麟 + 1 牛X 牛X
maozaiba + 1 + 2 奉上小小红包希望笑纳

查看全部评分


本帖被以下淘专辑推荐:

签到天数: 3 天

49
发表于 3 天前 | 只看该作者   广东省佛山市
6666666666666666666
回复 支持 反对

使用道具 举报

48
发表于 2025-4-11 17:52:46 | 只看该作者   广东省深圳市
谢谢分享~
回复 支持 反对

使用道具 举报

47
发表于 2025-2-26 12:24:03 | 只看该作者   广东省东莞市
远吗是老版本,直接放进去会识别吗?
回复 支持 反对

使用道具 举报

结帖率:100% (8/8)

签到天数: 4 天

46
发表于 2024-11-6 09:58:14 | 只看该作者   广东省佛山市
支持开源~!感谢分享
回复 支持 反对

使用道具 举报

结帖率:100% (4/4)

签到天数: 1 天

45
发表于 2023-11-1 19:49:01 | 只看该作者   安徽省宿州市
谢谢分享~
回复 支持 反对

使用道具 举报

结帖率:100% (4/4)

签到天数: 1 天

44
发表于 2023-11-1 19:48:49 | 只看该作者   安徽省宿州市
回复 支持 反对

使用道具 举报

结帖率:0% (0/1)

签到天数: 3 天

43
发表于 2023-7-29 19:05:20 | 只看该作者   上海市上海市
此处应该有鼓励
回复 支持 反对

使用道具 举报

结帖率:100% (4/4)

签到天数: 6 天

42
发表于 2023-1-28 22:51:37 | 只看该作者   山东省济南市
支持开源~!感谢分享
回复 支持 反对

使用道具 举报

结帖率:0% (0/1)
41
发表于 2022-12-15 17:26:26 | 只看该作者   广东省肇庆市
组合框下拉不显示了
回复 支持 反对

使用道具 举报

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

本版积分规则 致发广告者

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

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

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