安装包UI美化之路-支持不同的DPI放大

开发者福利!热门AI工具限时免费用 购周边即赠Coding Plan Lite,Claude Code、Cursor等20+工具畅享,效率翻倍! 阅读详情

今天记录一下使用nsNiuniuSkin+Nsis制作安装包过程中,如何解决安装包界面在DPI放大时引起的安装包界面模糊的问题,希望对大家有帮助!

问题背景

早期问题

nsNiuniuSkin作为一个安装包UI插件,在早期是并不支持DPI放大的,我们之前的实现方案是,让其自行跟随系统放大,而这带来了一系列问题:

  • 字体随着DPI放大后会变的模糊不清
  • 窗体的图片随着DPI放大后会变的模糊不清

而这严重影响影响了安装包的美感,与我们做安装包美化的初衷相悖! 插入一张1.5倍自动跟随放大的图来看看效果:

能看出来还是比较模糊的,如果放大到了2倍,会更加明显。

在2020年的时候,我开始着手解决此问题,也取得了不错的效果。得益于Duilib_Ultimate所支持的DPI放大能力,我们也很轻松的支持了DPI放大;在此之后,我们支持了不放大和2倍放大场景,在大多数情况下都能满足应用需求。

新的问题

然而,变化总是来的太快,我们很快发现,随着显示器分辨率的持续提升,现在2K屏,4k屏使用的也非常多了,如果不做DPI适应,会出现窗口过小的问题,具体如下:

  • 我们是在1.5倍放大以下时,统一采用不做放大适应处理,这将会导致在1.5倍DPI放大的情况下,窗口还是按原来的1倍显示着,会显得非常小
  • 现在已经有人使用4K显示器,然后应用300%放大了,这已经超出了我们现有的放大适应能力,结果就是做不到,又显示得太小了

问题解决

知道了问题所在,接下来就是对症解决了,结合实际问题,同时考虑未来的扩展性,我想了以下几个注意的点:

  • 增加支持1.5倍放大适应,避免造成脱节现象
  • 调整后,调整至150%,200%,300%,400%等几种阶梯式的适应能力
  • 不做125%和175%以及其他自定义倍数的支持(区间值取下限,比如175%,我们取1.5倍放大) 主要原因在于不规则的放大,会导致图片尺寸的难以控制,以及字体放大被取整后,造成字号不准确的可能。

实际操作

接下来我将实际演示一下使用nsNiuniuSkin+Nsis来实现不同DPI放大情况下的自适应功能实现:

1. 实现原理

核心的思想是首先我们要通过系统API,禁止我们程序的窗口跟随系统DPI放大而自动放大(前面已经说过自动放大会模糊);然后在程序中读取当前的DPI放大参数,由我们的程序自己控制窗口及控件尺寸、字号大小、控件间距等等,同时控制在不同DPI下应用不同的图片,最终使得整个窗口的显示符合在相应的DPI放大情况下自然的显示。

具体实现大家可以参考Duilib_Ultimate,实现的很不错。

2. 资源准备

我在Duilib_Ultimate的基础上,调整了一下图片命名的控制规则,我更喜欢像Macos下的不同倍数图片的命名,如:

  • bg.png
  • bg@1.5x.png
  • bg@2x.png
  • bg@3x.png

在做安装包UI设计与切图时,就需要考虑好,接下来要做哪些放大情况的适应,并不一定所有的都要支持,一般常用的还是1倍,1.5倍,2倍即可,3倍及4倍的情况,默认可以不要,未来有需求时再扩展。

值得一提的是,这里选择支持哪些倍数,最主要的原因就是资源的体积,最终我们安装包的大小,除了要安装的文件外,影响最大的一部分便是图片资源的大小了。 切好图片后,建议对图片做好压缩,否则体积就很大了。

3. 配置流程

接下来,以我们的leeqia_senior的模板为例,介绍一下具体的支持配置流程(原来已经支持1倍图和2倍图,本次增加1.5倍图的支持):

  1. 将准备好的1.5倍的图片资源放到skin/images/目录下 增加后,每种图片都会有三张不同放大倍数的图片

  1. 找到脚本文件ui_soft_setup.nsh,在其DuiPage函数中,在代码行nsNiuniuSkin::InitEngine下增加一行脚本:
nsNiuniuSkin::EnableDpi 1 1 0 0

此行代码的四个参数分别表示是否支持1.5倍、2倍、3倍、4倍放大,我们结合图片体积,以及我们目前的需要,暂时只开放1.5倍和2倍支持(大于2倍的会按两倍显示)。 以下展示高阶版1.5倍放大显示效果图:

高阶版2倍放大显示效果图:

此处我们能清晰的看到,不管是1.5倍DPI放大,还是2倍DPI放大,我们的窗口上的文字和图片始终是很清晰的,同时窗口的尺寸也是相应的变大了,非常完美的解决了DPI放大时的窗口显示问题。

4. 注意事项

在配置安装包的界面的时候,由于我们有1.5倍放大的场景存在,为了避免出现小数被取整时丢失精度(这也是我们不做125%和175%放大适应的原因所在),有几个注意事项(主要是UI设计人员要关注):

  • 注意字号不要用奇数,否则1.5倍后,无法取得准确的整数字号
  • 在设计控件的大小、间距时,需要采用偶数,避免1.5倍后丢失精度
  • 设计的图片的长和宽也需要是偶数

结语

在安装包安装过程中,精美的UI往往能让客户对所安装产品的印象更加深刻,更能体现出软件服务商在用户体验上的专注与用心! 希望我们的努力,能够让安装包制作再容易一点,再快乐一点!

愿天下没有难做的安装包!

【转载】nsNiuniuSkin使用教程 点关注不迷路,持续输出Unity干货文章。嗨,大家好,我是新发。我们使用Unity发布Windows平台exe时,生成的是一个exe和一个Data文件夹,而我们安装一些应用程序的时候,一般都是一个Setup.exe安装程序,而且很多Setup.exe的界面做的挺美观的,比如,我就做了一个,效果如下:今天,我就来讲讲如何制作美观的Setup.exe安装程序吧。你可以在我的这个基础上进行修改,自定义自己的安装程序。进入目录,打开文件。 阅读详情

相关推荐

使用 Duilib 设置高 DPI 显示适应性

在开发 Windows 桌面应用程序时,有效处理高 DPI 设置对于确保应用界面在现代显示器上看起来清晰且功能正常非常关键。本文将引导您使用 Duilib 配置应用程序以处理高 DPI 设置。

吃面不喝汤的博客 1765

NSIS美化控件

NSIS的美化控件,对应NSIS版本为3.03,提供include\plugin和示例

Qt界面美化实战:从QSS到QML,打造专业级GUI应用

在GUI开发中,界面美化是提升用户体验与产品专业度的关键环节。其核心原理在于通过样式与逻辑分离,实现视觉表现的可定制化。Qt框架为此提供了强大的技术栈,包括类似CSS的QSS样式表、底层的QPainter自定义绘制,以及声明式的Qt Quick(QML)。掌握这些技术不仅能实现丰富的视觉效果,更能通过统一的视觉规范提升开发效率与软件品质。在工业上位机、嵌入式HMI及工具软件等应用场景中,专业的界面设计能有效降低用户学习成本,增强交互流畅性。本文将聚焦Qt界面美化,系统梳理从基础样式设置到高级动画集成的实战路

weixin_30765577的博客 449

NSIS+Duilib 自定义安装程序

使用NSIS+Duilib 自定义安装界面,支持生成快捷图标、开机启动项、快速启动栏

duilib DPI分辨率 模糊问题及解决思路

文章摘要:针对高DPI环境下duilib和CEF界面模糊问题,分析发现当系统强制300%缩放时会导致界面模糊。解决方案采用动态DPI感知策略,通过Windows API检测当前DPI感知级别(PROCESS_DPI_UNAWARE/SYSTEM_DPI_AWARE/PER_MONITOR_DPI_AWARE),并让程序自主处理高DPI缩放。对于PER_MONITOR_DPI_AWARE模式,程序在分辨率超过2500时自动放大界面1/3,既保持清晰度又保证合适大小。实现方法包括SetProcessDpiAwa

目前打算换一个工作,有招聘windows c++方向的也欢迎联系,北京、济南 最好 114

安装包UI美化之路-通过nsNiuniuSkin来做Electron程序的打包、发布与升级

在翻看了electron-builder和electron-updater源码后,再结合反解Electron应用程序的安装包脚本,我们了解了其运作的机制,实现了一套与Electron打包无缝对接的方案,完全支持自动化,兼容electron程序的升级。希望有了我们的方案,大家能够在一天内完成安装包的制作以及升级功能的对接。

TragicGuy的专栏 4810

duilib适配高分屏(高DPI适配)

duilib适配高分屏高分屏(高DPI)适配适配原理(duilib)适配例子 高分屏(高DPI)适配 随着PC设备高分屏的越来越普及,PC端客户端软件也需要适配一下高分屏幕。在没有专门适配高分屏的情况下,普通软件界面看起来尺寸很小,操作体验大打折扣。Win10上微软提供了系统级的高分屏适配,但是缺点就是适配会导致软件上字体模糊、图片锯齿等。为了提高PC软件在高分屏上的使用体验,需要软件专门适配一下...

Troy的专栏 6322

关于DuiLibDPI适配问题

在某些情况下,虽然在高DPI的设置下DuiLib能正常的缩放,但是缩放后的显示效果很不好,文字图片显示模糊,影响用户体验,经过多次试验,解决办法如下: 在工程文件设置中,对相应工程做属性设置: 一 在工程->属性->清单工具->输入和输出->附加清单文件,在此配置项中选择相应的清单文件,清单文件内容如下: <?xml version="1.0" encoding="U...

liusarzn的博客 4569

安装包UI美化之路-nsNiuniuSkin界面在线设计引擎

nsNiuniuSkin界面在线设计引擎,是一个用于辅助nsNiuniuSkin的界面的预览与调试工具,类似于chrome的开发者工具,可以快速的查看各个界面效果,极大的提升界面配置的效率。

TragicGuy的专栏 2132

安装包UI美化之路-nsNiuniuSkin界面在线设计引擎多语言切换

nsNiuniuSkin界面在线设计引擎,是一个用于辅助nsNiuniuSkin的界面的预览与调试工具,类似于chrome的开发者工具,可以快速的查看各个界面效果,极大的提升界面配置的效率!

TragicGuy的专栏 1877

WinForm UI设计模板实战:从主题封装到高DPI适配与上位机落地

在桌面应用开发中,UI设计模板是提升界面一致性与开发效率的关键工程实践。通过定义视觉令牌、封装自绘控件、构建窗体基类,开发者可以从根源上解决WinForm界面风格杂乱、控件状态反馈缺失等问题。同时,高DPI适配与窗体缩放是WinForm开发中的常见难点,合理运用AutoScaleMode、DPI感知声明及动态布局,能有效避免高分屏下界面错位。在工业上位机、扫码枪、相机SDK等场景中,模板化的UI框架还需兼顾数据高频刷新与业务解耦,确保稳定流畅。本文结合实际项目,系统讲解WinForm UI设计模板的分层搭建

weixin_34205826的博客 2651

WinForm 界面美化实战:用 AntdUI 这款 UI 组件库三步完成改造

去年年底,我给客户交付了一款 WinForm 库存管理工具,功能一个不少,界面却被对方总监一句"太旧了"打回。第二周,我用 AntdUI——一个基于 Ant Design 设计语言的 WinForm UI 组件库,纯 GDI 渲染、内置 50+ 组件、支持黑白双主题——把整个界面重做了一遍,客户当场验收通过。 如果你也写过 WinForm 应用,大概能猜到那种处境:业务逻辑写得再扎实,一打开窗体

gitblog_00671的博客 421

NSIS+Duilib自定义安装程序

NSIS+Duilib自定义安装程序

基于duilib的NSIS界面插件

使用duilib界面库开发的NSIS界面插件,完整的visual studio工程。

DPI适配Demo

一个小demo,可以解决DPI适配的问题(包括界面跟文字)

TMS VCL UI Pack 13.5.9.0:Delphi高DPI与IDE稳定性终极补丁

VCL是Windows原生GUI开发的核心技术栈,其本质是直接调用USER32/GDI32 API的轻量级框架,而非过时遗产。理解VCL的渲染原理与IDE集成机制,是解决控件丢失、高DPI模糊、设计时崩溃等工程痛点的前提。TMS VCL UI Pack通过Direct2D硬件加速渲染、HWND子类化消息钩子、强化组件注册签名等底层技术,在不改变原有VCL项目结构的前提下,实现UI现代化升级与IDE稳定性保障。它特别适用于需长期维护的医疗、工业、金融类Delphi遗留系统,支持平滑过渡至Windows 11暗

weixin_34195142的博客 401

Windows秒变Mac风格!MyDockFinder V5.11桌面美化工具实战体验

MyDockFinder的成功,远不止是“让Windows看起来像Mac”。它是对现代桌面交互趋势的一次深刻回应:👉美观与效率不应对立,个性化与稳定性可以兼得。它证明了:- 即使操作系统底层不同,也能通过合理的技术选型实现高度仿真;- 第三方工具可以在不破坏系统安全的前提下,大幅提升用户体验;- 社区共创能让一个小众工具成长为生态产品。未来,或许我们会看到更多类似的“体验桥接”工具出现——毕竟,用户要的从来不是某个系统的外壳,而是。

weixin_29840475的博客 1478

macdowsOS Tool UI:Windows变身macOS风格一体化配置指南

Windows外观定制一直是许多用户追求个性化的入口。常见的桌面美化方案需要安装多个独立工具,分别调整主题、图标、任务栏与停靠栏,不仅配置分散,还容易因组件冲突导致系统不稳定。从原理上看,Windows仿macOS风格本质上是对窗口主题、字体渲染、图标资源、任务栏行为和停靠栏交互等多个系统外观层进行替换与模拟。一体化管理工具的出现,将分散的模块整合到统一界面,降低了入门门槛,也提高了整体兼容性。这类工具适合希望快速获得macOS视觉体验、又不愿反复折腾系统的用户。本文以macdowsOS Tool UI为例

weixin_34200628的博客 333

macdowsOS Tool UI:让Windows桌面一键变身macOS风格

桌面美化是个性化操作系统外观的常见需求,但传统方式往往需要分别下载主题、图标、任务栏和停靠栏等多款独立工具,步骤琐碎且容易出现兼容性冲突。一体化安装工具的出现,将分散的配置模块整合为统一入口,通过预置方案和集中管理降低自定义桌面的技术门槛,其核心价值在于提供了版本一致、可回滚的工程化流程,让美化过程从“玄学”变成可验证的重复操作。这类工具非常适合希望在不更换系统、不承担迁移成本的前提下体验其他平台视觉风格的用户,尤其对想尝试 macOS 桌面的 Windows 用户极具吸引力。macdowsOS Tool

weixin_34343000的博客 424
上一篇: 记录securecrt文件传输的方法
下一篇: 安装包UI美化之路-nsNiuniuSkin界面在线设计引擎
大蓝头
博客等级 码龄17年 128粉丝 58原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值