用两种方法快速简单的实现窗口淡入淡出 收藏
在应用程序中引入图片淡入及淡出,可以让用户界面更加美观。以前报刊杂志中介绍
的常用方法有两种:一是自己写程序,诸个象素进行混合渐变;二是使用DirectX,建立一
个带Alpha通道的Surface。第一种,效果可以自己控制,但比较麻烦,而且一般不容易生
成硬件优化的代码;第二种速度很快,却需要使用DirectX库。
本文结合Delphi实例代码,介绍两种简单快速的实现方法,算是一个总结吧,希望能
对初学者有所帮助。
一:AnimateWindow函数的使用:
(一)函数原型:
BOOL AnimateWindow(
HWND hwnd, // 要进行特效显示的窗体的句柄
DWORD dwTime, // 动画持续时间,以毫秒为单位
DWORD dwFlags // 动画类型
);
(二)参数设置:
hwnd :用“窗体名.handle”即可,如:Form1.handle;
dwTime:一般情况下用400比较合适,我偏向于1000;
dwFlags:可以设为多种效果,详见MSDN,这里我只介绍淡入淡出用到的参数AW_BLEND;
如果是淡入,设为AW_BLEND即可,如果是淡出,设为AW_BLEND or AW_HIDE。
(三)程序实例:
新建一个工程,在生成的窗体Form1上添加一个按钮Button1,Button1的Caption设为“淡
出”;接下来添加如下两段代码,实现淡入淡出:
1、淡入:双击Form1,在其“OnCreate”事件中添加:
AnimateWindow(Form1.Handle,1000,AW_BLEND);
2、淡出:双击Button1,在其“OnClick”事件中添加:
AnimateWindow(Form1.Handle,1000,AW_HIDE or AW_BLEND);
form1.Close;//关闭窗口
整个程序的procedure如下:
procedure TForm1.FormCreate(Sender: TObject);
begin
AnimateWindow(Form1.Handle,1000,AW_BLEND);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
AnimateWindow(Form1.Handle,1000,AW_HIDE or AW_BLEND);
form1.Close;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
AnimateWindow(Form1.Handle,1000,AW_BLEND);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
AnimateWindow(Form1.Handle,1000,AW_HIDE or AW_BLEND);
form1.Close;
end;
二、AlphaBlend属性结合Timer组件:
(一)原理:
在Delphi6.0以上(6.0以下我不了解),每个窗体有AlphaBlend属性和AlphaBlendValue
属性,将AlphaBlend属性设为True,然后在Timer组件中随着时间改变AlphaBlendValue的
值(0-255)即可。
(二)程序实例:
新建一个工程,并添加一个窗体Form2,将其AlphaBlend属性设置为True;在窗体Form1上添
加一个按钮Button1,Caption属性设为“淡入”,在Form2上添加一个按钮Button1,Caption
属性设为“淡出”;另外,在Form2上添加两个Timer组件Timer1、Timer2,将它们的Interval
属性设为3(越大动画时间越长),Enable设为False;接下来添加如下4段代码:
1、双击Form1上的Button1,在其“OnCreate”事件中添加:
Form2.AlphaBlendValue:=1;//窗体从透明开始
Form2.Show; //显示窗体Form2
Form2.BringToFront; //将窗体Form2移到前端
Form2.Timer1.Enabled:=true; //启动Timer1,控制窗体可见度-增加
2、双击Form2上的Button1,在其“OnCreate”事件中添加:
Timer2.Enabled:=true; //启动Timer2,控制窗体可见度-减少
3、双击Form2上的Timer1,在其“OnTimer”事件中添加:
Form2.AlphaBlendValue:=Form2.AlphaBlendValue+1;//增加可见度
Timer2.Enabled:=false; //停止Timer2
//如果可见度达到最大,停止Timer1
if Form2.AlphaBlendValue=255 then
timer1.Enabled:=false;
Form2.AlphaBlendValue:=Form2.AlphaBlendValue+1;//增加可见度
Timer2.Enabled:=false; //停止Timer2
//如果可见度达到最大,停止Timer1
if Form2.AlphaBlendValue=255 then
timer1.Enabled:=false;
4、双击Form2上的Timer2,在其“OnTimer”事件中添加:
Form2.AlphaBlendValue:=Form2.AlphaBlendValue-1;//减少可见度
Timer1.Enabled:=false; //停止Timer1
//如果可见度达到最小,停止Timer2
if Form2.AlphaBlendValue=0 then
begin
timer2.Enabled:=false;
Form2.Close;
end;
分享到:
相关推荐
在我的爱社区网中要显示二级频道,以前用的下拉也不太好看,所以想做个淡入淡出的div 显示,开始只是想实现这个效果,后来干脆就封装成一个方法了,有两种渐变的效果,当然大家也可以拓展,如果有什么问题或好的方法...
它不仅支持淡入淡出的效果,而且还可以增大铃声等等,而且使用上灰常的简单! 【软件特点】 从酷狗中提取制作,体积非常小; 绿色软件无需安装,适合U盘随身携带; 支持歌曲淡出淡入; 可对原声增大; 支持转换成...
2.jquery+css五屏焦点图淡入淡出+圆形按钮切换广告图片代码 3.jQuery+CSS实用图片收缩与放大效果插件 4.jquery+div实现同时滑动切换的图文展示特效插件下载 5.jquery+div带动画按钮图片手动与自动切换的特效...
WinForm右下角弹框提示源码 功能介绍: WinForm下弹框提示信息,可以设置包括上升下降和淡出淡入两种展示方式。标题、内容、实现时间、展示时间、消失时间、展示方式均可自定义
一款提示框,这种风格更像是手机Android上的风格,本代码演示了两种提示效果:一种是警告提示框,另一种是操作成功的提示,两者可同时弹出,以淡入淡出的方式渐变显示出来,3秒后自动关闭提示窗口,这个时间自己可...
可以在启动窗口和结束窗口中使用不规则外观以及淡入淡出特效。测试按钮可以测试启动窗口和结束窗口的实际效果。如果选定了不规则外观,并且载入一幅动态 GIF 图像,启动窗口和结束窗口将表现为极酷的动画窗口。 ...
可以在启动窗口和结束窗口中使用不规则外观以及淡入淡出特效。测试按钮可以测试启动窗口和结束窗口的实际效果。如果选定了不规则外观,并且载入一幅动态 GIF 图像,启动窗口和结束窗口将表现为极酷的动画窗口。 ...
3.6.1无参数构造方法的定义和使用129 3.6.2带参数构造方法的定义和使用131 3.6.3this关键字和构造方法的调用132 3.7静态方法133 3.7.1静态方法的声明和定义134 3.7.2静态方法和实例方法的区别134 3.7.3静态...
13.4.2 实现淡入/淡出渐变 13.4.3 集成JavaScript定时器 13.5 附加功能 13.5.1 插入额外提要 13.5.2 集成跳过和暂停功能 13.6 避免项目的限制 13.6.1 克服Mozilla的安全限制 13.6.2 修改应用的范围 13.7 重构 13.7.1...
淡入、淡出图像 清空TImage 直接在桌面上画图 绘图 翻转位图 读EXE文件主图标 转换BMP为ICO 转换BMP为JPEG 转换BMP为RTF代码 转换BMP为WMF 转换ICO为BMP 转换JPEG为BMP 转换RGB为BGR 转换WMF为BMP 转换彩色图像为...
如果您选择两个视频,将它们一起移动将执行淡入淡出的过渡。 该原理可以推广到大量视频。 与视频的直接交互可以快速React,并可以在屏幕上移动和变形它们。 操作的输出显示在输出窗口中,通常在外部监视器或投影仪...
VB6.0源码实现两种右下角通知窗口的显示特效,分别是:[淡出淡入显示消失]和 [渐渐向上和向下移动],自动获取任务栏高度,窗口显示到任务栏上方,不会覆盖,更加美观,而且窗口有最前端显示功能。有必要的友友可以来...
43 <br>0061 树的实现 44 <br>3.2 排序 48 <br>0062 如何实现选择排序算法 48 <br>0063 如何实现冒泡排序算法 49 <br>0064 如何实现快速排序算法 50 <br>0065 如何实现插入排序算法 ...
API的使用方法.ec API 设置颜色对话框模块.ec ard.ec Arhz_自动更新.ec Base64编解码.ec BASE64编解码模块.ec Bios.ec Bios 信息.ec BMP加密数据.ec BMP滤镜模块.ec BOX.EC BPL专用更新模块.ec BPL综合模 块.ec BPL...
API的使用方法.ec API 设置颜色对话框模块.ec ard.ec Arhz_自动更新.ec Base64编解码.ec BASE64编解码模块.ec Bios.ec Bios 信息.ec BMP加密数据.ec BMP滤镜模块.ec BOX.EC BPL专用更新模块.ec BPL综合模 块.ec BPL...
这两款文字特效软件,内置了几百种效果,做出的歌词效果,很多是用Flash无法完成的,至于怎样使用这两款软件这里就不做详细介绍了,点击查看这两款软件都是所见即所得,也就是说你添加的效果很快就能在软件中预览到,...
35.Flash5允许使用Action的功能有哪几种? A. Symbol B. Movie Clips C. Keyframe D. Button Symbol 36.以下语句说法正确的有: A. getURL表示使浏览器浏览到指定页面 B. gotoAndPlay表示跳转到指定帧并播放 ...
12.5 使用剪贴画收藏集 241 12.5.1 打开和浏览“剪辑管理器” 241 12.5.2 使用“剪辑管理器”插入剪贴画 241 12.5.3 创建和删除文件夹 242 12.5.4 在收藏集之间移动剪辑 242 12.5.5 分类剪辑 242 12.5.6...