NSIS欢迎界面图片拉伸问题求助:调整安装程序后logo变形
NSIS位图拉伸模糊问题的解决方案
排除nsResize对位图控件的强制调整
nsResize默认会批量调整对话框内所有控件尺寸,包括欢迎/完成页的位图控件——哪怕你设置了!define MUI_WELCOMEFINISHPAGE_BITMAP_NOSTRETCH,它也可能已经修改了位图控件的大小,导致位图被拉伸。解决方法是跳过该控件的调整:- MUI欢迎页位图的控件ID通常为
1004 - 添加定义:
!define RESIZE_EXCLUDE_CONTROLS "1004",让nsResize忽略该控件
- MUI欢迎页位图的控件ID通常为
修正位图尺寸的计算逻辑
你用的AddHeight 75u里的u是NSIS对话框单位(dialog units),不是直接对应像素。对话框单位和像素的转换依赖系统字体,不能直接把原位图高度314px加75得到436px。正确做法是:- 先确定nsResize调整后,位图控件的实际像素尺寸
- 按该尺寸重新制作位图,而非直接拉伸原图
确保MUI参数的定义顺序正确
!define MUI_WELCOMEFINISHPAGE_BITMAP_NOSTRETCH必须放在!insertmacro MUI_PAGE_WELCOME之前,否则参数不生效。示例:!define MUI_WELCOMEFINISHPAGE_BITMAP_NOSTRETCH !insertmacro MUI_PAGE_WELCOME手动还原位图控件尺寸(备选方案)
如果以上方法无效,可在初始化时强制重置位图控件尺寸:Function .onGUIInit FindWindow $0 "#32770" "" $HWNDPARENT GetDlgItem $1 $0 1004 SendMessage $1 ${WM_SETREDRAW} 0 0 SetWindowPos $1 0 0 0 164 314 ${SWP_NOMOVE|SWP_NOZORDER} ; 还原为原位图尺寸 SendMessage $1 ${WM_SETREDRAW} 1 0 FunctionEnd
内容的提问来源于stack exchange,提问作者Alex
相关产品推荐
相关产品推荐

