安装Inno Setup时如果选择了水波效果插件(如下图),将在Inno Setup的安装目录下自带有水波特效的例子,如路径:C:\Program Files (x86)\Inno Setup 5\Examples\下的WaterLib_Example.iss。

  

  

  以下是我在原例子的基础上修改得到的非增强版可用的精简代码:

 ; 脚本由 Inno Setup 脚本向导 生成!
; 有关创建 Inno Setup 脚本文件的详细资料请查阅帮助文档!
#include "compiler:WaterLib.iss" #define MyAppName "我的程序"
#define MyAppVersion "1.5"
#define MyAppPublisher "我的公司"
#define MyAppURL "http://www.example.com/"
#define MyAppExeName "MyProg.exe" [Setup]
; 注: AppId的值为单独标识该应用程序。
; 不要为其他安装程序使用相同的AppId值。
; (生成新的GUID,点击 工具|在IDE中生成GUID。)
AppId={{F40EA292-5A4E-41EB-9819-7D426D45A468}
AppName={#MyAppName}
AppVersion={#MyAppVersion}
;AppVerName={#MyAppName} {#MyAppVersion}
AppPublisher={#MyAppPublisher}
AppPublisherURL={#MyAppURL}
AppSupportURL={#MyAppURL}
AppUpdatesURL={#MyAppURL}
DefaultDirName={pf}\{#MyAppName}
DisableProgramGroupPage=yes
OutputBaseFilename=WaterExp
Compression=lzma
SolidCompression=yes
DisableWelcomePage=no
WizardImageFile=compiler:WizModernImage-Is.bmp
WizardSmallImageFile=compiler:WizModernSmallImage-Is.bmp
[Languages]
Name: "chinesesimp"; MessagesFile: "compiler:Default.isl" [Tasks]
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked [Files]
;Source: "C:\Program Files (x86)\Inno Setup \Examples\MyProg.exe"; DestDir: "{app}"; Flags: ignoreversion
Source: compiler:InnoCallback.dll; DestDir: {tmp}; Flags: dontcopy noencryption
;Source: demo.bmp; DestDir: {tmp}; Flags: dontcopy noencryption
; 注意: 不要在任何共享系统文件上使用“Flags: ignoreversion” [Icons]
Name: "{commonprograms}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"
Name: "{commondesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon [Code] Const
DrawTextMoveDemo = '动态移动演示'; type
TTimerProc = procedure(H: LongWord; MSG: LongWord; idEvent: LongWord; dwTime: LongWord);
function WrapTimerProc(CallBack: TTimerProc; ParamCount: Integer): LongWord; external 'InnoCallback@files:InnoCallBack.dll stdcall';
function SetTimer(hWnd: LongWord; nIDEvent, uElapse: LongWord; lpTimerFunc: LongWord): LongWord; external 'SetTimer@user32.dll stdcall'; var
MoveB_X, MoveT_Y: Integer;
DrawBitmapDemo: TBitmap;
WaterHandle:Integer; procedure MyTimerProc(H: LongWord; MSG: LongWord; idEvent:LongWord; dwTime:LongWord);
begin
MoveT_Y := MoveT_Y + ;
If MoveT_Y >= WizardForm.WizardBitmapImage.Height then MoveT_Y := ;
WaterDrawText(WaterHandle, , , MoveT_Y, DrawTextMoveDemo); MoveB_X := MoveB_X + ;
If MoveB_X >= WizardForm.WizardBitmapImage.Width then MoveB_X := - DrawBitmapDemo.Width;
WaterDrawBitmap(WaterHandle, , MoveB_X, , DrawBitmapDemo.Handle, True, clDefault);
end; procedure InitializeWizard();
var
F: AnsiString;
TimerCallBack: LongWord;
begin
WaterSupportAuthor(True);
//支持本人作品, 建议开启标识显示.
//只有开启该功能后, 才可以使用WaterDraw****相关API的功能 //创建水波特效
F:= ExpandConstant('{tmp}\WizardImage.bmp');
WizardForm.WizardBitmapImage.Bitmap.SaveToFile(F);
WaterHandle := WaterInit(WizardForm.WelcomePage.Handle, , );
WaterSetBounds(WaterHandle, WizardForm.WizardBitmapImage.Left, WizardForm.WizardBitmapImage.Top, WizardForm.WizardBitmapImage.Width, WizardForm.WizardBitmapImage.Height);
WaterSetFile(WaterHandle, AnsiString(F));
WaterSetActive(WaterHandle, True);
DeleteFile(F); //竖向移动的文本
MoveT_Y := ;
WaterDrawTextBrush(WaterHandle, , clBlack, bsClear);
WaterDrawTextFont(WaterHandle, , '宋体', , clYellow, );
WaterDrawText(WaterHandle, , , MoveT_Y, DrawTextMoveDemo); //横行移动的位图
MoveB_X := ;
DrawBitmapDemo:= TBitmap.Create;
DrawBitmapDemo.LoadFromFile(ExpandConstant('{commonappdata}\Microsoft\User Account Pictures\guest.bmp'));
//ExtractTemporaryFile('demo.bmp');
//DrawBitmapDemo.LoadFromFile(ExpandConstant('{tmp}\demo.bmp'));
WaterDrawBitmap(WaterHandle, , MoveB_X, , DrawBitmapDemo.Handle, True, clDefault); //创建动态显示文本或位图的定时器
TimerCallBack := WrapTimerProc(@MyTimerProc, );
SetTimer(, , , TimerCallBack);
end; procedure CurPageChanged(CurPageID: Integer);
begin
Case CurPageID of
wpWelcome : WaterSetParentWindow(WaterHandle, WizardForm.WelcomePage.Handle); //将水波移动到另一个句柄上
wpFinished: WaterSetParentWindow(WaterHandle, WizardForm.FinishedPage.Handle); //将水波移动到另一个句柄上
end;
end; //释放所有水波对象
procedure DeinitializeSetup();
begin
WaterAllFree;
end;

效果如下:

inno 实现水波特效的更多相关文章

  1. matlab练习程序(水波特效)

    还记得原来写过一个对图像进行波纹扭曲操作的博文. 这次实现的是水波特效,其实就是通过正余弦函数表示波纹中心位置慢慢向外扩散,通过叠加衰减因子使振幅不断减小,进而产生水波的效果. 效果如下: 原图: 波 ...

  2. 一款基于jquery实现的鼠标单击出现水波特效

    今天要为大家绍一款由jquery实现的鼠标单击出现水波特效.用鼠标猛点击页面,你可以看到页面不断出面水波纹效果.然后水波纹渐渐消失.效果非常不错.我们一起看下效果图: 在线预览   源码下载 实现的代 ...

  3. Python: PS 滤镜--水波特效

    本文用 Python 实现 PS 滤镜中的 水波特效 import numpy as np from skimage import img_as_float import matplotlib.pyp ...

  4. cocos2d-x 动画特效集合

    转自:http://www.cnblogs.com/linux-ios/archive/2013/04/09/3009292.html 备用 bool HelloWorld::init() { /// ...

  5. Android特效专辑(十一)——仿水波纹流量球进度条控制器,实现高端大气的主流特效

    Android特效专辑(十一)--仿水波纹流球进度条控制器,实现高端大气的主流特效 今天看到一个效果挺不错的,就模仿了下来,加上了一些自己想要的效果,感觉还不错的样子,所以就分享出来了,话不多说,上图 ...

  6. WebGL——水波纹特效

    大家好,今天我ccentry要做一个水波纹特效,我们来看看水波纹特效的做法.首先我们来看一下水波纹特效的效果是怎么样的,请看下图. 我们要做的就是类似这种纹理特效,那么我们来看看是如何制作的吧.首先鲫 ...

  7. cocos2dx动画常见特效(转)

    本文转载自:http://www.cnblogs.com/linux-ios/archive/2013/04/09/3009292.html bool HelloWorld::init() { // ...

  8. Cocos2d-X中的动作特效

    Cocos2d-X中提供了很丰富的动作特效 比如:网格动画 扭曲特效 3D瓷砖波动特效 程序代码: #include "ActionEffect.h" #include " ...

  9. 2.CCGridAction(3D效果),3D反转特效,凸透镜特效,液体特效,3D翻页特效,水波纹特效,3D晃动的特效,扭曲旋转特效,波动特效,3D波动特效

     1 类图组织 2 实例 CCSprite * spr = CCSprite::create("HelloWorld.png"); spr->setPosition(cc ...

随机推荐

  1. RPC学习--C#使用Thrift简介,C#客户端和Java服务端相互交互

    本文主要介绍两部分内容: C#中使用Thrift简介 用Java创建一个服务端,用C#创建一个客户端通过thrift与其交互. 用纯C#实现Client和Server C#服务端,Java客户端 其中 ...

  2. LTS

    LTS(light-task-scheduler)主要用于解决分布式任务调度问题,支持实时任务,定时任务和Cron任务.有较好的伸缩性,扩展性,健壮稳定性而被多家公司使用. 1. 支持分布式,解决多点 ...

  3. Jquery div展开收缩

    <html> <meta http-equiv="Content-Type" content="text/html; charset=gb2312&qu ...

  4. 快快快!27个提升效率的iOS开源库推荐

    文章来源:http://www.csdn.net/article/2015-07-21/2825264-27-ios-open-source-libraries/1 我热爱开源,更喜爱那些花费宝贵的业 ...

  5. 关于 Uncaught (in promise) DOMException: The play() request was interrupted by a call to pause() 错误

    最近在做项目的时候发现一个如题的控制台报错. 一看右侧的报错文件是undefined 这下苦恼了,定位不到问题所在. 今天解决了这个问题,就来分享一下. 问题的关键所在是在执行了play()方法以后立 ...

  6. IEEE二进制浮点数算术标准学习

    看到有网上有个项目是要求将浮点数用二进制表示出来,需要用IEEE754标准,查了查维基和深入理解计算机系统,重新学习了一遍浮点数在计算机中的表示和内存中的存储, 先简单的做个笔记,后面需要更深入的理解 ...

  7. SVN系统的几个术语

    SVN系统的几个术语 User:用户,可以远程连接到SVN服务器的权限实体. User Group:用户组,用于管理一组权限相同的用户. Repository:版本库,在服务器端保存着的项目中所有的文 ...

  8. SQl server 关于重复插入数据的测试

    最近发布的脚本,有那种防止重复插入数据(包括存在时更新,不存在是插入的处理,判断的方向可能与下面的示例相反) 使用类似下面的 SQL declare @id int, @value int if no ...

  9. python第一天基础1-1

    win下是没有多进程的 windows:1.下载安装包 https://www.python.org/downloads/2.安装 默认安装路径:C:\python273.配置环境变量 [右键计算机] ...

  10. 【温故Delphi】Win32API之CreateMutex

    解决问题 如何让一个软件在一台机器上只能运行一个实例呢?这个问题用专业术语就是进程互斥.这个问题可以通过CreateMutex来解决. 进程互斥的核心思想:进程在启动时首先检查是否存在此进程实例,如果 ...