using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Runtime.InteropServices; using System.Text; using System.Windows.Forms; namespace BaseForm { public partial class AnimateForm : Form {/// <summary> /// 窗体动画函数 /// </summary> /// <param name="hwnd">指定产生动画的窗口的句柄</param> /// <param name="dwTime">指定动画持续的时间</param> /// <param name="dwFlags">指定动画类型,可以是一个或多个标志的组合。</param> /// <returns></returns> [DllImport("user32")] private static extern bool AnimateWindow(IntPtr hwnd, int dwTime, int dwFlags); //下面是可用的常量,根据不同的动画效果声明自己需要的 private const int AW_HOR_POSITIVE = 0x0001;//自左向右显示窗口,该标志可以在滚动动画和滑动动画中使用。使用AW_CENTER标志时忽略该标志 private const int AW_HOR_NEGATIVE = 0x0002;//自右向左显示窗口,该标志可以在滚动动画和滑动动画中使用。使用AW_CENTER标志时忽略该标志 private const int AW_VER_POSITIVE = 0x0004;//自顶向下显示窗口,该标志可以在滚动动画和滑动动画中使用。使用AW_CENTER标志时忽略该标志 private const int AW_VER_NEGATIVE = 0x0008;//自下向上显示窗口,该标志可以在滚动动画和滑动动画中使用。使用AW_CENTER标志时忽略该标志该标志 private const int AW_CENTER = 0x0010;//若使用了AW_HIDE标志,则使窗口向内重叠;否则向外扩展 private const int AW_HIDE = 0x10000;//隐藏窗口 private const int AW_ACTIVE = 0x20000;//激活窗口,在使用了AW_HIDE标志后不要使用这个标志 private const int AW_SLIDE = 0x40000;//使用滑动类型动画效果,默认为滚动动画类型,当使用AW_CENTER标志时,这个标志就被忽略 public AnimateForm() { InitializeComponent(); } ///<summary> ///显示动画 ///<para>type:0-不使用滑动,1-从左向右,2-从右向左,3-从上到下,4-从下到上</para> ///</summary> public void AnimateShow(int type=0, int interval=500) { switch(type) { case 0: break; case 1: AnimateWindow(this.Handle, interval, AW_SLIDE | AW_ACTIVE | AW_HOR_POSITIVE); break; case 2: AnimateWindow(this.Handle, interval, AW_SLIDE | AW_ACTIVE | AW_HOR_NEGATIVE); break; case 3: AnimateWindow(this.Handle, interval, AW_SLIDE | AW_ACTIVE | AW_VER_POSITIVE); break; case 4: AnimateWindow(this.Handle, interval, AW_SLIDE | AW_ACTIVE | AW_VER_NEGATIVE); break; default: break; } this.Show(); } ///<summary> ///隐藏动画 ///<para>type:0-不使用滑动,1-从左向右,2-从右向左,3-从上到下,4-从下到上</para> ///</summary> public void AnimateHide(int type = 0, int interval = 500) { switch (type) { case 0: break; case 1: AnimateWindow(this.Handle, interval, AW_HIDE | AW_ACTIVE | AW_HOR_POSITIVE); break; case 2: AnimateWindow(this.Handle, interval, AW_HIDE | AW_ACTIVE | AW_HOR_NEGATIVE); break; case 3: AnimateWindow(this.Handle, interval, AW_HIDE | AW_ACTIVE | AW_VER_POSITIVE); break; case 4: AnimateWindow(this.Handle, interval, AW_HIDE | AW_ACTIVE | AW_VER_NEGATIVE); break; default: break; } this.Hide(); } /// <summary> /// 禁止ALT+F4关闭 /// </summary> protected override CreateParams CreateParams { get { const int CS_NOCLOSE = 0x200; CreateParams cp = base.CreateParams; cp.ClassStyle = cp.ClassStyle | CS_NOCLOSE; return cp; } } } }