C# 几种常用的窗口特效

f44bca2928ec21d74bcdb554f4c3f80a.png

前言

a50655cd048f1ee98a7d64d9f64e3114.png

0d68446ff2362d96d65bd3c17289ad6c.png

    说到特效,就得谈"动"这个字,在Winform中想要动起来,大部分可以靠Timer来实现(你要说我靠循环也能实现一样的效果,我也无话可说),但基本上也就限制在一些比较基础的效果了。不过,也没关系,谁让这是Winform呢?

下面描述了三种窗口的效果。分别是淡入淡出、变大变小、缓升缓降。主要通过结合Timer与透明度、大小、以及位置等来实现。

acf6b9a62dceaff146382d4c11d5996b.png

9b7d80ee6ca48d99d82f50a89f3537c5.gif

11d8e7a1428d4ee8914b07d9588fc231.jpeg

开发环境:.NET Framework版本:4.8

开发工具:Visual Studio 2022

99cacdfb58fd7f9e6a8cc39038a3e6c1.png

实现步骤

f47f094f2c6efc37fcd7273d040e96de.png

  1. 淡入淡出

public Form1()
        {
            InitializeComponent();
            Opacity = 0;
            timer1.Interval = 10;
            timer1.Start();
        }
   private void timer1_Tick(object sender, EventArgs e)
        {


            if (isShow)
            {
                if (Height < height)
                {
                    Height += 1;
                }
                else
                {
                    timer1.Stop();
                }
            }
            else
            {
                if (ClientSize.Height > 0)
                {
                    Height -= 1;
                }
                else
                {
                    timer1.Stop();
                    Close();
                }
            }
        }
  1. 变大变小

public Form2()
        {
            InitializeComponent();
            height = Height;


            Size = new Size(Width, 0);
            timer1.Interval = 10;
            timer1.Start();
        }
 
 private void timer1_Tick(object sender, EventArgs e)
        {


            if (isShow)
            {
                if (Height < height)
                {
                    Height += 1;
                }
                else
                {
                    timer1.Stop();
                }
            }
            else
            {
                if (ClientSize.Height > 0)
                {
                    Height -= 1;
                }
                else
                {
                    timer1.Stop();
                    Close();
                }
            }
        }
  1. 缓升缓降

public Form3()
        {
            InitializeComponent();
            timer1.Interval = 10;
        }
        private void Form3_Load(object sender, EventArgs e)
        {
            Location = new Point(screenRect.Width - Width, screenRect.Height);
            timer1.Start();
        }
 private void timer1_Tick(object sender, EventArgs e)
        {
            if (isShow)
            {
                if (Location.Y > screenRect.Height-Height)
                {
                    Location = new Point(Location.X, Location.Y - 1);
                }
                else
                {
                    timer1.Stop();
                }
            }
            else
            {
                if (Location.Y < screenRect.Height )
                {
                    Location = new Point(Location.X, Location.Y + 1);
                }
                else
                {
                    timer1.Stop();
                    Close();
                }
            }


        }

0836bdb85d8e16b21f22fe13680be50f.png

实现效果

37e36ce0fed95a0e9c18a058eebc8e99.png

96a53d7dadada0cea7575fb33f691608.gif

☛☛☛点击此处下载源码☚☚☚

761e7a09bfc1ee79d2713ae0ef53c129.gif

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值