C# winform窗体动画实现

这里主要是用到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);
            }
        }


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值