`
cfeers
  • 浏览: 134906 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

用两种方法快速简单的实现窗口淡入淡出 收藏

阅读更多

 用两种方法快速简单的实现窗口淡入淡出 收藏

在应用程序中引入图片淡入及淡出,可以让用户界面更加美观。以前报刊杂志中介绍
的常用方法有两种:一是自己写程序,诸个象素进行混合渐变;二是使用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 窗口淡入淡出渐变效果

    在我的爱社区网中要显示二级频道,以前用的下拉也不太好看,所以想做个淡入淡出的div 显示,开始只是想实现这个效果,后来干脆就封装成一个方法了,有两种渐变的效果,当然大家也可以拓展,如果有什么问题或好的方法...

    神奇的mp3剪切器

    它不仅支持淡入淡出的效果,而且还可以增大铃声等等,而且使用上灰常的简单! 【软件特点】 从酷狗中提取制作,体积非常小; 绿色软件无需安装,适合U盘随身携带; 支持歌曲淡出淡入; 可对原声增大; 支持转换成...

    JQuery&CSS;&CSS;+DIV实例大全.rar

    2.jquery+css五屏焦点图淡入淡出+圆形按钮切换广告图片代码 3.jQuery+CSS实用图片收缩与放大效果插件 4.jquery+div实现同时滑动切换的图文展示特效插件下载 5.jquery+div带动画按钮图片手动与自动切换的特效...

    WinForm右下角弹框提示源码20130322

    WinForm右下角弹框提示源码 功能介绍: WinForm下弹框提示信息,可以设置包括上升下降和淡出淡入两种展示方式。标题、内容、实现时间、展示时间、消失时间、展示方式均可自定义

    扁平化风格自动关闭的jquery右下角提示特效.rar

    一款提示框,这种风格更像是手机Android上的风格,本代码演示了两种提示效果:一种是警告提示框,另一种是操作成功的提示,两者可同时弹出,以淡入淡出的方式渐变显示出来,3秒后自动关闭提示窗口,这个时间自己可...

    AutoPlay_Menu_Builder6.0.1328注册版

    可以在启动窗口和结束窗口中使用不规则外观以及淡入淡出特效。测试按钮可以测试启动窗口和结束窗口的实际效果。如果选定了不规则外观,并且载入一幅动态 GIF 图像,启动窗口和结束窗口将表现为极酷的动画窗口。  ...

    AutoPlay_Menu_Builder5.5.0.1328注册版

    可以在启动窗口和结束窗口中使用不规则外观以及淡入淡出特效。测试按钮可以测试启动窗口和结束窗口的实际效果。如果选定了不规则外观,并且载入一幅动态 GIF 图像,启动窗口和结束窗口将表现为极酷的动画窗口。  ...

    Java开发技术大全 电子版

    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静态...

    【卷一/共两卷】AJAX实战pdf高清版90M

    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...

    Delphi开发技巧之-图形图像

    淡入、淡出图像 清空TImage 直接在桌面上画图 绘图 翻转位图 读EXE文件主图标 转换BMP为ICO 转换BMP为JPEG 转换BMP为RTF代码 转换BMP为WMF 转换ICO为BMP 转换JPEG为BMP 转换RGB为BGR 转换WMF为BMP 转换彩色图像为...

    GLMixer:图形现场混音器-开源

    如果您选择两个视频,将它们一起移动将执行淡入淡出的过渡。 该原理可以推广到大量视频。 与视频的直接交互可以快速React,并可以在屏幕上移动和变形它们。 操作的输出显示在输出窗口中,通常在外部监视器或投影仪...

    twoformfade.rar_Windows编程_Visual_Basic_

    VB6.0源码实现两种右下角通知窗口的显示特效,分别是:[淡出淡入显示消失]和 [渐渐向上和向下移动],自动获取任务栏高度,窗口显示到任务栏上方,不会覆盖,更加美观,而且窗口有最前端显示功能。有必要的友友可以来...

    C#编程经验技巧宝典

    43 <br>0061 树的实现 44 <br>3.2 排序 48 <br>0062 如何实现选择排序算法 48 <br>0063 如何实现冒泡排序算法 49 <br>0064 如何实现快速排序算法 50 <br>0065 如何实现插入排序算法 ...

    1345个易语言模块

    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...

    1350多个精品易语言模块

    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...

    flashmtv的制作

    这两款文字特效软件,内置了几百种效果,做出的歌词效果,很多是用Flash无法完成的,至于怎样使用这两款软件这里就不做详细介绍了,点击查看这两款软件都是所见即所得,也就是说你添加的效果很快就能在软件中预览到,...

    flash shiti

    35.Flash5允许使用Action的功能有哪几种? A. Symbol B. Movie Clips C. Keyframe D. Button Symbol 36.以下语句说法正确的有: A. getURL表示使浏览器浏览到指定页面 B. gotoAndPlay表示跳转到指定帧并播放 ...

    PowerPoint.2007宝典 3/10

    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...

Global site tag (gtag.js) - Google Analytics