Windows窗体应用c#制作屏保

一.Windows 窗体应用程序

Windows窗体应用程序:是在用户计算机上运行的客户端应用程序,可显示信息、请求用户输入以及通过网络与远程计算机进行通信。

二.常用的控件

控件名称一般为表示控件类型的前缀加上表示控件作用的字符组成,常用的控件如下图所示:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


三.简单的气泡案例

相信都会设置在系统待机休眠时运行屏保,也就是气泡来回碰撞,下面简单做个气泡案例:
1.需要控件timer计时器(本次介绍一个计时器完成)
timer计时器:按照用户定义的间隔引发的事件的组件
Interval属性 :表示的是设置 这个计时器的 频率
2.实例化(将窗体改变成圆形)
(1).实例化是指在面向对象的编程中,把用类创建对象的过程称为实例化。是将一个抽象的概念类,具体到该类实物的过程。实例化过程中一般由类名 对象名 = new 类名(参数1,参数2...参数n)构成
气泡顾名思义就是圆形的,但是不可以直接写出来,我们需要对它进行实例化
GraphicsPath path = new GraphicsPath();//实例化
            path.AddEllipse(0,0,200,200);//向当前路径添加一个椭圆
            this.Region = new Region(path)//获取或设置与控件关联的窗口区域

当然在进行实例化时候,我们的命名空间并没有此类,我们需要进行自行添加,具体操作如下:
在这里插入图片描述
当鼠标放在此语句上面时出现灯泡形状,我们单击选择第一个,此类就会自动添加至命名空间,如下图:
在这里插入图片描述

(2).气泡制作代码
this.Left 表示 设置或者获取 控件(窗体) 左边缘 与 容器(桌面窗口) 左边与 之间的距离
this.Top 表示 设置或者获取 控件(窗体) 上边缘 与 容器(桌面窗口) 上边缘之间的距离
在显示时候要注意:
Screen.PrimaryScreen.后的方法中
Bounds 获取显示的边界
WorkingArea 获取显示的工作区域,不包括任务栏、停靠窗口和停靠工具栏
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace Studio1
{
    public partial class Collide2 : Form
    {
        public Collide2()
        {
            InitializeComponent();
        }
         private void Collide2_Load(object sender, EventArgs e)
        {
            this.FormBorderStyle = FormBorderStyle.None;//获取或设置窗体的边框样式
            this.Location = new Point(0,0);//获取或设置窗体位置
            this.Size = new Size(200,200);//获取或设置窗体大小
            this.BackColor = Color.Blue;//设置窗体颜色
            this.Opacity = 0.6;//设置窗体不透明度
            //设置窗体圆形
            GraphicsPath path = new GraphicsPath();//实例化
            path.AddEllipse(0,0,200,200);
            this.Region = new Region(path);
            timer1.Start();//开启计时器timer1
            }
         //声明变量用于窗体的移动
        int x = 5;
        int y = 4;
        private void timer1_Tick(object sender, EventArgs e)
        {
            this.Left += x;//x为正数时窗体向右移动x个像素,x为负数时窗体向左移动x个像素
            this.Top += y;//y为正数时窗体向下移动y个像素,y为负数时窗体向上移动y个像素
             if (this.Height+this.Top>=Screen.PrimaryScreen.Bounds.Height)//判断窗体 上边缘加上 窗体的高度 是否大于 桌面的高度
            {
                if (x > 0 && y > 0)//窗体由左上方碰撞到桌面底部
                {
                    x = 5;
                    y = -4;
                }
                if (x<0&&y>0)//窗体由右上方碰撞到桌面底部
                {
                    x =- 5;
                    y = -4;
                }
            }
            if (this.Width+this.Left>=Screen.PrimaryScreen.Bounds.Width)//判断窗体 左边缘加上 窗体的宽度 是否大于 桌面的宽度
            {
                if (x>0&&y>0)//窗体由左下方碰撞到桌面右边缘
                {
                    x = -5;
                    y = 4;
                }
                if (x>0&&y<0)//窗体由右上方碰撞到桌面右边缘
                {
                    x = -5;
                    y = -4;
                }
            }
             if (this.Left<=0)//判断窗体 左边缘加上 窗体的宽度 是否小于 桌面的宽度
            {
                if (x<0&&y<0)//窗体由左下方碰撞到桌面左边缘
                {
                    x = 5;
                    y = -4;
                }
                if (x<0&&y>0)//窗体由右上方碰撞到桌面左边缘
                {
                    x = 5;
                    y = 4;
                }
            }
            if (this.Top<=0)//判断窗体 上边缘加上 窗体的高度 是否小于 桌面的高度
            {
                if (x<0&&y<0)//窗体由右下方碰撞到桌面上边缘
                {
                    x = -5;
                    y = 4;
                }
                if (x>0&&y<0)//窗体由左下方碰撞到桌面上边缘
                {
                    x = 5;
                    y = 4;
                }
                }
        }
    }
}

补充:get和set用法

1.当引用属性时,除非该属性为赋值目标,否则将调用get访问器读取该属性的值
2.set访问器与返回void的方法类似,它使用value的隐式参数,此参数的类型是属性的类型

在这里插入图片描述

原创文章 36 获赞 31 访问量 2091

猜你喜欢

转载自blog.csdn.net/qq_45096273/article/details/105431118