欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

C#实现四个timer随便转屏保

程序员文章站 2024-03-16 20:54:04
...

代码:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace 四个timer随便转   //名称
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)  //当form1加载时
        {
            this.FormBorderStyle = FormBorderStyle.None;   //设置其窗体边框为空
            this.Width = 300;  //窗体宽度为300
            this.Height = 300;  //窗体高度为300
            this.Location = new Point(0, 0);  //给窗体左上角定位
            this.Opacity = (0.8);  //设置窗体的不透明度为0.8
            timer1.Start();  //启动timer1
        }


        private void timer1_Tick(object sender, EventArgs e)
        {
            this.Left += 3;  //当timer1启动时窗体left每一个时间段增加3
            this.Top += 3;  //当timer1启动时窗体top每一个时间段增加3
            if (this.Top+this.Height>=Screen.PrimaryScreen.WorkingArea.Height)
            //如果此时窗体移动的位置为其top加上其height大于等于工作区的height时则执行
            {
                timer1.Stop();  //停止timer1 
                timer2.Start();//当timer1停止时则需要启动timer2来控其移动位置
            }
            if (this.Left+this.Width>=Screen.PrimaryScreen.WorkingArea.Width)
            //如果此时窗体的位置为其left加上其width大于等于显示区的宽度则执行
            {
                timer1.Stop();  //这里为什么停止timer1是因为下面有启动timer1
                                //此时位置条件符合if判断
                               //所以timer1停止   暂且先不管 依照预测位移顺序按部就班
                timer3.Start();  //此时则又需要重新启动timer3 来控制其位移 因为timer3的位移
                                //控制公式  正好符合其位移到指定的位置公式                                            
            }
        }


        private void timer2_Tick(object sender, EventArgs e)  //timer2启动时
        {
            this.Top -= 3; //其top每一个时间段减少3的距离
            this.Left += 3;  //其left每一个时间段增加3的距离
            if (this.Top <= 0)  //如果这时窗体的位置为其top小于等于零时则执行
            {
                timer2.Stop();  //停止timer2 因为要给他新的位移方式和方向啊 
                timer1.Start();  //而此时timer1就符合其位移的方式和方向 所以咱启动timer1
                                //至于什么时候停止timer1 则需要在timer1中增加新的判断条件
            }
        }

        private void timer3_Tick(object sender, EventArgs e)  //当timer3启动时
        {
            this.Top += 3;  //其top每隔间隔时间增加3的距离
            this.Left -= 3;  //其left每隔间隔时间减少3的距离你
            if (this.Top+this.Height>=Screen.PrimaryScreen.WorkingArea.Height ) 
            {  //按照timer3的位移方式 当窗体的移动位置符合此条件时则执行
                timer3.Stop();  //停止timer3 让其寻找新的移动方式重新位移
                timer4.Start();//此时启动timer4来进行位移 启动后则需要停止那就去找停止条件  
            }
            if (this.Left<=0) //此时的情况与上面重新启动timer1一样
            {  //当timer3 启动后 其位移位置符合left小于等于零则执行
                timer3.Stop(); //(先不管按照预想位移去执行)  此时则停止timer3 寻找新的位移
                timer1.Start();  //那 此时timer1又符合条件了 所以启动timer1 实现循环
            }
        }

        private void timer4_Tick(object sender, EventArgs e)
        {  //当timer4启动时
            this.Top -= 3;  //其top每隔间隔时间减少3
            this.Left -= 3;  //其left每隔间隔时间减少3
            if (this.Top <=0)
            {  //当位移的位置其top小于等于零 则执行
                timer4.Stop();  //此时停止timer4 来寻找新的位移方式
                timer3.Start();  //而此时timer3就符合新的位移方式 则启动timer3
                                  //要想停止timer3 则需要在timer3中添加新的判断条件
            }
        }
    }
}

入坑不久 欢迎诸位指正 !

可能有的顺序表达的有点混乱 其实就是寻找符合下一步的移动公式然后启动其timer 然后在一定的位置停止

然后寻找新的移动方式 进行位移   至于重复启动的timer 就是因为他符合新的移动条件~~~

至于怎么变为圆形  另一篇有讲  这个地方有待加强!

相关标签: 屏保 timer c#