【笔记】动画显示窗体

实例说明

当用户启动程序后,普通的程序窗口都是瞬间显示到屏幕上,这样未免有些生硬。如果窗口能够慢慢的展现在用户面前,将会是什么样的效果?本例设计的是一个动画显示的窗体,该程序运行后,窗体是慢慢的以拉伸的效果显示到用户的面前。当关闭时也是一样慢慢的消失。

技术要点

Windows提供了一个API函数Animate Window,该函数可以实现窗体的动画效果,AnimateWindow函数在C#中的声明如下

1  [DllImportAttribute("user32.dll")]
2         private static extern bool AnimateWindow(IntPtr  hwnd, int  dwTime, int  dwFlags);
View Code

参数说明如下。

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         
View Code

                                                                 参数说明

标    志

描    述

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         }
View Code
原文地址:https://www.cnblogs.com/TwinkleStar/p/4050169.html