火焰特效制作方法有很多,专业的如PS但要在nsis中实现却并非易事,借助firectrl控件可以很方便的在nsis中制作火焰特效,让你感受不一样的界面效果,它是在界面显示之前先加载动态库,将所需处理的图片加载到内存,然后调用接口就可以实现这个特效了,像熊熊火焰在图片底部燃烧,看起来非常炫,那么具体是如何实现的呢,请下下面的代码.为了能够实现这个效果你必须先下载相应的插件哦.
/* if you have this effects,please keep! Writer:【Mr.Z_production ·JUAN】 http://blog.163.com/53_54 Thanks:Restools,zhfi,X-Star */
!AddPluginDir '.' !AddIncludeDir '.'
!include MUI2.nsh
; -------------------------------------------------- ; General settings.
Name 'Flame_Effects Example' OutFile 'NSIS_fire.exe' SetCompressor /SOLID lzma
ReserveFile '${NSISDIR}Pluginssystem.dll' ReserveFile firectrl.dll
; -------------------------------------------------- ; MUI interface settings. !define MUI_FINISHPAGE_NOAUTOCLOSE ; -------------------------------------------------- ; Insert MUI pages. !define MUI_WELCOMEFINISHPAGE_BITMAP WizModernImage-Is.bmp
; Installer pages !define MUI_PAGE_CUSTOMFUNCTION_PRE pre !define MUI_PAGE_CUSTOMFUNCTION_LEAVE leave !define MUI_WELCOMEPAGE_TEXT '火焰效果' !insertmacro MUI_PAGE_WELCOME
!insertmacro MUI_PAGE_INSTFILES
!define MUI_PAGE_CUSTOMFUNCTION_Pre pre !define MUI_PAGE_CUSTOMFUNCTION_LEAVE leave !insertmacro MUI_PAGE_FINISH
; -------------------------------------------------- ; Languages.
!insertmacro MUI_LANGUAGE 'english'
Function .onGUIEnd SetPluginUnload manual firectrl::disablefire System::Free FunctionEnd
Function .onInit InitPluginsDir SetOutPath $PLUGINSDIR File firectrl.dll SetOutPath $TEMP FunctionEnd
Function Pre System::Call 'user32::LoadImage(i,t,i,i,i,i,) i (0,'$PLUGINSDIRmodern-wizard.bmp',0,0,0,0x10) .s' Pop $R0 System::Call '$PLUGINSDIRfirectrl::enablefire(i,i,i,i,i) i ($HWNDPARENT,0,0,$R0,50)' FunctionEnd
Function leave System::Call '$PLUGINSDIRfirectrl::disablefire()' FunctionEnd
Section 'Dummy' SecDummy SectionEnd