实例032 动画显示窗体

实例说明

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

技术要点

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

        [DllImportAttribute("user32.dll")]

        private static extern bool AnimateWindow(IntPtr  hwnd, int  dwTime, int  dwFlags);

参数说明如下。

l     hwnd:目标窗口句柄。

l     dwTime:动画的持续时间,数值越大动画效果的时间就越长。

l     DwFlagsDwFlags参数是动画效果类型选项,该参数在C#中的声明如下:

        public const Int32 AW_HOR_POSITIVE = 0x00000001;

        public const Int32 AW_HOR_NEGATIVE = 0x00000002;

        public const Int32 AW_VER_POSITIVE = 0x00000004;

        public const Int32 AW_VER_NEGATIVE = 0x00000008;

        public const Int32 AW_CENTER = 0x00000010;

        public const Int32 AW_HIDE = 0x00010000;

        public const Int32 AW_ACTIVATE = 0x00020000;

        public const Int32 AW_SLIDE = 0x00040000;

        public const Int32 AW_BLEND = 0x00080000;

DwFlags参数可选值含义如表1.1所示

1.1                                                                   参数说明

标    志

描    述

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)主要代码如下。

        public Form1( )

        {

            InitializeComponent( );

            AnimateWindow(this.Handle, 300, AW_SLIDE + AW_VER_NEGATIVE);//开始窗体动画

        }

        private void Form1_FormClosed(object sender, FormClosedEventArgs e)

        {  //结束窗体动画

           AnimateWindow(this.Handle, 300, AW_SLIDE + AW_VER_NEGATIVE + AW_HIDE);

        }

举一反三

根据本实例,读者可以开发以下程序。

  实现窗体的淡入淡出。

  实现窗体从中间扩散显示。

 

你可能感兴趣的:(Winform,c#)