手把手教你: 如何制作以动画的形式显示窗体

       一般的, 当我们启动一个应用程序后, 普通的应用程序窗口都是瞬间显示到屏幕上. 您是否想象过这样一种情景 : 打开一个应用程序后, 窗口的显示跟幻灯片一样变幻莫测,丰富多彩? 也许不能登大雅之堂, 但至少可以娱乐自己.

       好了, 进入正题: 您现在可以想象这样一幅画面:  当您启动一个应用程序后, 显示器中央出现一个小点, 然后慢慢变大, 向四周不断扩展, 直到窗口全部显示. 而当您关闭它时它又会从上向下慢慢地从显示器中消失.... 这将是什么效果? 呵呵, 如果您愿意,  下面就跟着我一起完成这样一个伟大的梦想吧.

       设计思路是什么呢? 如果您很聪明, 会马上意识到这个工程很可能要用到 Windows提供 API. 上网一查, 果然有一个函数 : AnimateWindow, 它可以实现窗体的动画效果. 所以剩下的工作就是查看 MSDN, 了解更多的关于 AnimateWindow 函数的信息.

       下面结合本例详细介绍 AnimateWindow  函数在 C#中的应用.

      

声明方式:   

声明
[DllImportAttribute("user32.dll")]
private static extern bool AnimateWindow(IntPtr hwnd, int dwTime, int dwFlags);

      

参数说明:

Code
(1). IntPtr hwnd: 目标窗口的句柄对象, 一般为 this.Handle
(
2). int dwTime: 动画的持续时间, 数值越大动画效果的时间越长
(
3). int dwFlags: 动画效果类型选项, 在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;

      

动画效果类型详细说明表:

1. AW_SLIDE : 使用滑动类型, 默认为该类型. 当使用 AW_CENTER 效果时, 此效果被忽略

2. AW_ACTIVE: 激活窗口, 在使用了 AW_HIDE 效果时不可使用此效果

3. AW_BLEND: 使用淡入效果

4. AW_HIDE: 隐藏窗口

5. AW_CENTER: 与 AW_HIDE 效果配合使用则效果为窗口几内重叠,  单独使用窗口向外扩展.

6. AW_HOR_POSITIVE : 自左向右显示窗口

7. AW_HOR_NEGATIVE: 自右向左显示窗口

8. AW_VER_POSITVE: 自顶向下显示窗口

9. AW_VER_NEGATIVE : 自下向上显示窗口

 

         看懂了这些, 下面我们的工作会变得非常简单.

         启动程序后, 动画效果显示窗口的代码如下:

Code
AnimateWindow(this.Handle, 1000, AW_SLIDE + AW_CENTER);

 

         而关闭程序后, 动画效果显示窗口代码如下:

Code
private void Form1_FormClosed(object sender, FormClosedEventArgs e)
{
AnimateWindow(
this.Handle, 500, AW_SLIDE + AW_VER_POSITIVE + AW_HIDE);
}

 

       程序的完整代码如下:

Code
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;
namespace FalshWindows
{
public partial class Form1 : Form
{
[DllImportAttribute(
"user32.dll")]
private static extern bool AnimateWindow(IntPtr hwnd, int dwTime, int dwFlags);

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;
public Form1()
{
InitializeComponent();
AnimateWindow(
this.Handle, 1000, AW_SLIDE + AW_CENTER);
}

private void Form1_FormClosed(object sender, FormClosedEventArgs e)
{
AnimateWindow(
this.Handle, 500, AW_SLIDE + AW_VER_POSITIVE + AW_HIDE);
}
}
}

 

后记: 虽为一雕虫小技,但蕴涵着很多思想, 大家可以眼高, 但手一定要底. 

   必得原理,编程是件很快乐的事.

转载于:https://www.cnblogs.com/ziyiFly/archive/2008/09/18/1293327.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值