使用if语句实现一个timer转圈圈:

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;
using System.Drawing.Drawing2D;  //命名空间namespace 一个timer转圈圈1  //名字
{public partial class Form1 : Form{public Form1(){InitializeComponent();}private void Form1_Load(object sender, EventArgs e)  //窗体加载事件{this.BackColor = Color.Pink;  //改变窗体颜色为粉色this.FormBorderStyle = FormBorderStyle.None;  //设置窗体边框为空this.Width = 300;  //设置窗体宽度this.Height = 300;  //设置窗体高度this.Location = new Point(0, 0);  //设置窗体左上角定位this.Opacity = (0.8);  //设置窗体透明度timer1.Start();  //启动秒表GraphicsPath path = new GraphicsPath();  //创建一个新的类 需要定义圆形使用path.AddEllipse(0,0,this.Width,this.Height);  //定义窗体的形状为椭圆但定义其宽高为窗体宽高就是圆形this.Region = new Region(path);   //给这个类创建新的对象}int x = 3;  //创建一个x的值int y = 3;  //创建一个y的值private void timer1_Tick(object sender, EventArgs e) //每当时间间隔后发生{ this.Left += x;  //窗体的left随时间间隔后增加x距离  //1this.Top += y;  //窗体的top随时间间隔后增加y距离if (x>0&&y>0)  //使用if循环 当x和y的值都大于零则执行{if (this.Top+this.Height>=Screen.PrimaryScreen.WorkingArea.Height)//当x和y都大于零后 若符合窗体的top加上其窗体的高度大于等于其显示区的高度则执行此条件{ x = 5;  //left增加5    y = -5;  //top减少5}//而此时x>0 y<0;则往下寻找符合的ifif (this.Left+this.Width>=Screen.PrimaryScreen.WorkingArea.Width)//当窗体的left加上窗体的宽度大于等于其显示区的宽度 且前一个x y都大于零则执行{y = -5;  //left减5  x = -5;  //top减5}//而此时的值都小于零 则往下寻找x<0&&y<0条件}if (x>0&&y<0) //当x>0&&y<0则执行下列可能{if (this.Top<=0)  //如果窗体top小于等于0时则执行{x = 5;  //此时left增加5  y = 5;  //此时top增加5}//因为此时x y都大于零则寻找x>0&&y>0在上面  然后找到符合条件的if执行if (this.Left+this.Width>=Screen.PrimaryScreen.WorkingArea.Width) //当窗体的left加上窗体的宽度大于等于其显示区的宽度 则执行{x = -5;  //此时left减少5  y = -5;  //此时top减少5}}if (x<0&&y<0)  //如果if小于0 y小于0则往下寻找if执行{if (this.Top<=0)  //当窗体top小于等于零则执行{x = -5;  //此时left减少5  y = 5;  //此时top增加5}//这时呢x<0 y>5则寻找符合的if条件执行if(this.Left<=0)  //当窗体left小于等于零则执行{x = 5; //此时left增加5y = -5; //此时top减少五  往右上方移动}//此时x>0 y<0则寻找符合的if条件执行}if (x<0&&y>0)  //当x<0且y>0时则往下寻找if执行{if (this.Top+this.Height>=Screen.PrimaryScreen.WorkingArea.Height) //当窗体的top和窗体的高度大于等于其显示区域的高度时执行{x = -5; //此时left减少5  //6y = -5;  //此时top减少5}//此时则寻找x<0&&y<0条件if (this.Left<=0)//当窗体的left小于等于零则执行{x = 5;  //此时left增加5  //8y = 5;  //此时top增加5}}}}
}

至于判断条件值每次都大于 因为小于会有点不严谨

然后之前存在运动跑出去的问题 因为条件没有写全  每一个x与y的取值条件有两种碰撞可能  一共八种判断条件

其实理解四种x y取值判断   每一种又有两种碰撞可能  所以具备八种判断条件

入坑不久 后面是与小伙伴讨论出来的 可能有更简单的方法 !代码部分可能会有点小问题 总体是对的  问题完全是因为自己打字 有问题!咳咳~~~欢迎指正!

C# 使用一个timer实现转圈圈屏保相关推荐

  1. From .1:从屏保到Win平台开发 - 一个可运行的C#屏保程序

    有一天在微信里看见了微软的Fluent Design系统(腾讯翻译为浸流设计系统)界面设计的一张图片,觉得非常好看,顿时想,这么好看的界面,如果能是一个屏保该有多好.这样的话,用户坐在电脑前也不会忍心 ...

  2. 用JavaScript写一个类似于windows的气泡屏保效果

    最近在学习JavaScript,然后在书上看到了一个简单的碰壁反弹效果,效果你们可以看一下,js代码如下: window.onload = function(){var main = document ...

  3. android可以有一个悬浮窗口在进入屏保状态显示,点击进入应用,Android如何实现锁屏状态下弹窗...

    前言 想在锁屏上面实现弹窗,第一个想法就是利用 WindowManager设置 Window的 Flag,通过设置 Flag的显示优先级来让窗口显示在锁屏的上面. 接下来就是试验可能相关的 Windo ...

  4. dreambackend.java_【AndroidTV】如何自定义屏保、更改屏保时长

    目录 目录 系统屏保源码有哪些 在设置中显示的屏保选项有哪些 屏保选项是如何获得的 多久出现屏保 修改方法 我的应用 项目需求 处理方式 遇到一个诡异的问题 系统屏保源码有哪些 如果要自定义屏保可以参 ...

  5. linux命令行自制屏保,Linux终端界面屏保

    在很多Linux使用者的认知里,都认为终端下的Linux操作界面是没有屏保的,只有像windows那样的图形界面下才有屏保.但是其实Linux下也是有屏保的,只不过是ASCII 屏保.下面就来给大家介 ...

  6. fliqlo时钟屏保win7/win10/win8下载

    fliqlo for windows是fliqlo 时钟屏保专门针对windows用户设置的时尚翻页式时钟屏保.它不像其他的屏保软件你一样有着绚丽的效果.特别的功能设置,有的仅仅是黑白色调再加上当前的 ...

  7. linux系统如何进入屏保,Linux终端界面屏保

    在很多Linux使用者的认知里,都认为终端下的Linux操作界面是没有屏保的,只有像windows那样的图形界面下才有屏保.但是其实Linux下也是有屏保的,只不过是ASCII 屏保.下面就来给大家介 ...

  8. w ndows7怎么设置桌面保护,Windows7怎么设置屏保时间_Win7怎么设置待机时间?-192路由网...

    Windows 7电脑中怎么设置屏幕保护时间?虽然屏幕保护时间的设置比较简单,不过对于一些不熟悉电脑的朋友来说,设置屏幕保护时间还是有些困难.因此,本文通过图文并茂的方式,来详细介绍win7中设置屏幕 ...

  9. 简单的WIN32屏保开发制作(可播放视频)

    本文不同于VC下使用ScrnSave.lib进行屏保制作的方式, 而是在VS下以其内在原理,从无到有进行一个简单的WIN32屏保开发, 只要你拥有一些简单的WIN32程序编写的经验,便可以很轻松的明白 ...

最新文章

  1. python opencv轮廓总结
  2. python一级考试题目_全国青少年软件编程(Python)等级考试试卷(一级)br测试卷-20191114123907422...
  3. 史上最硬核的Linux依赖问题解决方案
  4. 必须掌握的Cookie知识点在这里
  5. tokumx经营报表
  6. 2台电脑一根网线传文件_「教程」如何快速的在两台电脑间传输大文件?
  7. wp_nav_menu($args)函数说明
  8. Fast Fourier Transform
  9. Android 系统(53)---关于触摸屏快速点击事件误识别为滑动事件
  10. 指针笔试题及其解析、字符串左旋、字符串追加strcat
  11. ORACLE的跟踪文件
  12. listview选中高亮
  13. vb.net word 自定义工具栏_Word|用这20个技巧办公从此告别龟速工作
  14. Python + Selenium 自动发布文章(一):开源中国
  15. valgrind 报告 ecpg内存泄露 (二)
  16. 同一个JDK,命令行运行,与JNI加载虚拟机,还是有差异
  17. ERP采购管理 金蝶
  18. Mac解决Error: No such file or directory @ rb_sysopen报错问题
  19. java 连接ftp服务器 从页面进行下载
  20. 费马大定理四分之一解决

热门文章

  1. jdk-18.0.0.1安装包下载安装教程
  2. 计算机基础知识考试题库-----复习资料
  3. php 获取当前时间相差12小时_php时间戳转换差8小时问题
  4. 完美解决双飞燕血手鼠标宏权限修改
  5. Codeforces Puzzles
  6. 软件工程课程实验报告:实验三
  7. iOS模拟器调试WebView
  8. xshell6+xftp6软件资源和解决强制更新方法
  9. 『MIUI』系统程序精简列表,全机型适用
  10. 吴恩达深度学习——读书笔记