实例说明
当用户启动程序后,普通的程序窗口都是瞬间显示到屏幕上,这样未免有些生硬。如果窗口能够慢慢的展现在用户面前,将会是什么样的效果?本例设计的是一个动画显示的窗体,该程序运行后,窗体是慢慢的以拉伸的效果显示到用户的面前。当关闭时也是一样慢慢的消失。
技术要点
Windows提供了一个API函数Animate Window,该函数可以实现窗体的动画效果,AnimateWindow函数在C#中的声明如下
1 [DllImportAttribute("user32.dll")] 2 private static extern bool AnimateWindow(IntPtr hwnd, int dwTime, int dwFlags);
参数说明如下。
l hwnd:目标窗口句柄。
l dwTime:动画的持续时间,数值越大动画效果的时间就越长。
l DwFlags:DwFlags参数是动画效果类型选项,该参数在C#中的声明如下
1 public const Int32 AW_HOR_POSITIVE = 0x00000001; 2 public const Int32 AW_HOR_NEGATIVE = 0x00000002; 3 public const Int32 AW_VER_POSITIVE = 0x00000004; 4 public const Int32 AW_VER_NEGATIVE = 0x00000008; 5 public const Int32 AW_CENTER = 0x00000010; 6 public const Int32 AW_HIDE = 0x00010000; 7 public const Int32 AW_ACTIVATE = 0x00020000; 8 public const Int32 AW_SLIDE = 0x00040000; 9 public const Int32 AW_BLEND = 0x00080000; 10
参数说明
标 志 |
描 述 |
AW_SLIDE |
使用滑动类型。缺省则为滚动动画类型。当使用AW_CENTER标志时,这个标志就被忽略 |
AW_ACTIVE |
激活窗口。在使用了AW_HIDE标志后不要使用这个标志 |
AW_BLEND |
使用淡入效果。只有当hWnd为顶层窗口的时候才可以使用此标志 |
AW_HIDE |
隐藏窗口,缺省则显示窗口 |
AW_CENTER |
若使用了AW_HIDE标志,则使窗口向内重叠;若未使用AW_HIDE标志,则使窗口向外扩展 |
AW_HOR_POSITIVE |
自左向右显示窗口。该标志可以在滚动动画和滑动动画中使用。当使用AW_CENTER标志时,该标志将被忽略 |
AW_HOR_NEGATIVE |
自右向左显示窗口。当使用了 AW_CENTER 标志时该标志被忽略 |
AW_VER_POSITIVE |
自顶向下显示窗口。该标志可以在滚动动画和滑动动画中使用。当使用AW_CENTER标志时,该标志将被忽略 |
AW_VER_NEGATIVE |
自下向上显示窗口。该标志可以在滚动动画和滑动动画中使用。当使用AW_CENTER标志时,该标志将被忽略 |
实现过程
(1)创建一个项目,将其命名为Ex01_32,默认窗体为Form1。
(2)在窗体上添加PictureBox控件。
(3)设置PictureBox控件的Image属性。
(4)主要代码如下
1 public Form1( ) 2 { 3 InitializeComponent( ); 4 AnimateWindow(this.Handle, 300, AW_SLIDE + AW_VER_NEGATIVE);//开始窗体动画 5 } 6 private void Form1_FormClosed(object sender, FormClosedEventArgs e) 7 { //结束窗体动画 8 AnimateWindow(this.Handle, 300, AW_SLIDE + AW_VER_NEGATIVE + AW_HIDE); 9 }