用两种方法快速简单的实现窗口淡入淡出[1]

[入库:2005年8月18日] [更新:2007年3月24日]

本文简介:选择自 srw 的 blog

我的主页: http://www.tommstudio.com/

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

本文关键:用两种方法快速简单的实现窗口淡入淡出
  相关方案
Google
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top