lizf2019 发表于 2020-8-17 16:57

C#窗体透明度

本帖最后由 lizf2019 于 2020-8-17 16:59 编辑

原始代码:
private bool isForm1 = true;//设置用于指示淡入淡出变化方向的变量
private void timer1_Tick(object sender, EventArgs e)
      {
            if (isForm1)
            {
                this.Opacity += 0.02;      //由不透明变成透明
                if (this.Opacity >= 1)      //当完全不透明时再由不透明变成透明
                {
                  isForm1 = false;
                }
            }
            else
            {
                this.Opacity -= 0.02;      //由透明转换为不透明
                if (this.Opacity <= 0)      //当完全透明时停止计时器,并退出欢迎界面
                {
                  this.timer1.Stop();
                  this.Close();
                }
            }
      }
俺想把它改成一直运行:
先由不透明转透明
再由透明转不透明,
一直循环
求大佬解答

lizf2019 发表于 2020-8-17 16:59

欢迎各位大佬发表高见{:301_997:}

kuqideyanlei 发表于 2020-8-17 17:05

加一个while循环呗

初见悲风 发表于 2020-8-17 17:05

我对这个 不是特别了解,不过,想要一直循环,是不是得用循环语句,建议用while

lwz2005 发表于 2020-8-17 17:08

个人推荐加一个while

loneho@qq.com 发表于 2020-8-17 17:15

使用全局变量记录当前透明度100,然后timer 改成100左右,每次-5透明度,2秒后即变成0,然后当透明度=0的时候,再改成每次+5透明度

fuhohua 发表于 2020-8-17 17:22

      private bool isForm1 = true;//设置用于指示淡入淡出变化方向的变量
      private void timer1_Tick(object sender, EventArgs e)
      {
            if (isForm1)
            {
                this.Opacity += 0.02;       //由不透明转为透明
                if (this.Opacity >= 1)      //当完全不透明时再由不透明转为透明
                {
                  isForm1 = false;
                }
            }
            else
            {
                this.Opacity -= 0.02;      //由透明转换为不透明
                if (this.Opacity <= 0)       //当完全透明时转为不透明
                {
                  isForm1 = true;         //当完全透明时 isForm1 = true
                }
            }
      }

冰之子4336 发表于 2020-8-17 17:23

Task.Run(() =>
                {
                  timer1_Tick(null,null);
                });

{:301_997:}

wf2zky 发表于 2020-8-17 17:26

opacity小于等于0的时候不停止计时器,直接isForm1 再转成true
那就又开始从不透明转透明了

涛之雨 发表于 2020-8-17 18:00

开一个线程,循环呗。。。
和我那个跟随鼠标和碰撞移动原理
页: [1] 2
查看完整版本: C#窗体透明度