这里主要是用到win32的一个方法 AnimateWindow(),详细介绍可以搜索AnimateWindow。
代码:
using System;
using System.Collections.Generic;
using System.Runtime.InteropServices;
using System.Text;
namespace AnimationForm
{
public class Win32
{
/// <summary>
/// 执行动画
/// </summary>
/// <param name="whnd">控件句柄</param>
/// <param name="dwtime">动画时间</param>
/// <param name="dwflag">动画组合名称</param>
/// <returns>bool值,动画是否成功</returns>
[DllImport("user32.dll")]
public static extern bool AnimateWindow(IntPtr whnd, int dwtime, int dwflag);
/// <summary>
/// 从左到右显示
/// </summary>
public const Int32 AW_HOR_POSITIVE = 0x00000001;
/// <summary>
/// 从右到左显示
/// </summary>
public const Int32 AW_HOR_NEGATIVE = 0x00000002;
/// <summary>
/// 从上到下显示
/// </summary>
public const Int32 AW_VER_POSITIVE = 0x00000004;
/// <summary>
/// 从下到上显示
/// </summary>
public const Int32 AW_VER_NEGATIVE = 0x00000008;
/// <summary>
/// 若使用了AW_HIDE标志,则使窗口向内重叠,即收缩窗口;否则使窗口向外扩展,即展开窗口
/// </summary>
public const Int32 AW_CENTER = 0x00000010;
/// <summary>
/// 隐藏窗口,缺省则显示窗口
/// </summary>
public const Int32 AW_HIDE = 0x00010000;
/// <summary>
/// 激活窗口。在使用了AW_HIDE标志后不能使用这个标志
/// </summary>
public const Int32 AW_ACTIVATE = 0x00020000;
/// <summary>
/// 使用滑动类型。缺省则为滚动动画类型。当使用AW_CENTER标志时,这个标志就被忽略
/// </summary>
public const Int32 AW_SLIDE = 0x00040000;
/// <summary>
/// 透明度从高到低
/// </summary>
public const Int32 AW_BLEND = 0x00080000;
}
}
使用:
/// <summary>
/// 淡入淡出特效
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnJb_Click(object sender, EventArgs e) {
//淡出特效隐藏
if (Win32.AnimateWindow(this.Handle, 300, Win32.AW_BLEND | Win32.AW_HIDE)) {
//淡入特效显示
Win32.AnimateWindow(this.Handle, 300, Win32.AW_BLEND | Win32.AW_ACTIVATE);
}
}
/// <summary>
/// 右到左特效
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnYdz_Click(object sender, EventArgs e) {
//右到左特效隐藏
if (Win32.AnimateWindow(this.Handle, 300, Win32.AW_HOR_NEGATIVE | Win32.AW_HIDE | Win32.AW_SLIDE)) {
//右到左特效显示
Win32.AnimateWindow(this.Handle, 300, Win32.AW_HOR_NEGATIVE | Win32.AW_ACTIVATE | Win32.AW_SLIDE);
}
}
/// <summary>
/// 左到右特效
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnZdy_Click(object sender, EventArgs e) {
//左到右特效隐藏
if (Win32.AnimateWindow(this.Handle, 300, Win32.AW_HOR_POSITIVE | Win32.AW_HIDE | Win32.AW_SLIDE)) {
//左到右特效显示
Win32.AnimateWindow(this.Handle, 300, Win32.AW_HOR_POSITIVE | Win32.AW_ACTIVATE | Win32.AW_SLIDE);
}
}
/// <summary>
/// 收缩扩张特效
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnKz_Click(object sender, EventArgs e) {
//收缩特效隐藏
if (Win32.AnimateWindow(this.Handle, 300, Win32.AW_CENTER | Win32.AW_HIDE | Win32.AW_SLIDE)) {
//扩张特效显示
Win32.AnimateWindow(this.Handle, 300, Win32.AW_CENTER | Win32.AW_ACTIVATE | Win32.AW_SLIDE);
}
}
/// <summary>
/// 上到下特效
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnSx_Click(object sender, EventArgs e) {
//上到下特效隐藏
if (Win32.AnimateWindow(this.Handle, 300, Win32.AW_HIDE | Win32.AW_VER_POSITIVE | Win32.AW_SLIDE)) {
//上到下特效显示
Win32.AnimateWindow(this.Handle, 300, Win32.AW_ACTIVATE | Win32.AW_VER_POSITIVE | Win32.AW_SLIDE);
}
}
/// <summary>
/// 下到上特效
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnXs_Click(object sender, EventArgs e) {
//下到上特效隐藏
if (Win32.AnimateWindow(this.Handle, 300, Win32.AW_HIDE | Win32.AW_VER_NEGATIVE | Win32.AW_SLIDE)) {
//下到上特效显示
Win32.AnimateWindow(this.Handle, 300, Win32.AW_ACTIVATE | Win32.AW_VER_NEGATIVE | Win32.AW_SLIDE);
}
}