Winform中实现自定义屏保效果(附代码下载)
场景
效果

注:
博客主页:
https://blog.csdn.net/badao_liumang_qizhi
关注公众号
霸道的程序猿
获取编程相关电子书、教程推送与免费下载。
实现
新建form窗体,窗体中设计布局如下,一个Panel中拖拽四个label,然后添加两个Button,再添加一个Timer控件。

在窗体的Load事件中将Label进行隐藏
private void Form1_Load(object sender, EventArgs e)
{
LabelVisible(false);//隐藏要移动的文本
}
public void LabelVisible(bool n)
{
label1.Visible = n;//隐藏或显示该控件
label2.Visible = n;
label3.Visible = n;
label4.Visible = n;
}
在预览按钮的点击事件中,对预览进行初始化。
private void button1_Click(object sender, EventArgs e)
{
preview();//对预览进行初始化
}
public void preview()
{
this.FormBorderStyle = FormBorderStyle.Sizable;//使窗体有边框
this.WindowState = FormWindowState.Normal;//使窗体恢复默认大小
this.BackColor = Color.Gainsboro;//设设置窗体的背景颜色
panel1.Visible = true;//显示该控件
multimedia(panel1);//设置窗体中各控件的样式
timer1.Start();//启动计时器
}
会首先执行设置窗体中各控件的样式的方法
public void multimedia(Control panel)
{
LabelVisible(true);//显示要移动的文本
if (panel.Name == "form1")//如果父级窗体是当前窗体
{
isbool = false;//隐藏
fontSize = ;//设置字体大小
}
else
{
isbool = true;//显示
fontSize = ;//设置字体大小
}
label1.Text = "霸道的程序猿";//设置文本
label1.Parent = panel;//设置父级控件
label1.Font = new Font("宋体", fontSize, FontStyle.Bold);//设置字体样式
label2.Parent = panel;//设置父级控件
label2.Text = "氓" + "\n" + "流" + "\n" + "道" + "\n" + "霸";//设置纵向文本
label2.Font = new Font("宋体", fontSize, FontStyle.Bold);//设置字体样式
label3.Text = "猿序程的道霸";//设置文本
label3.Parent = panel;//设置父级控件
label3.Font = new Font("宋体", fontSize, FontStyle.Bold);//设置字体样式
label4.Text = "氓" + "\n" + "流" + "\n" + "道" + "\n" + "霸"; ;//设置纵向文本
label4.Parent = panel;//设置父级控件
label4.Font = new Font("宋体", fontSize, FontStyle.Bold);//设置字体样式
panel.Visible = isbool;//隐藏或显示
button1.Visible = isbool;//隐藏或显示
button2.Visible = isbool;//隐藏或显示
label1.Top = panel.Height / ;//设置当前控件的显示位置
label3.Top = (panel.Height / ) * ;//设置当前控件的显示位置
label3.Left = - label2.Width;//设置当前控件的显示位置
label4.Left = (panel.Width / ) * ;//设置当前控件的显示位置
label4.Top = - label2.Height;//设置当前控件的显示位置
label2.Left = panel.Width / ;//设置当前控件的显示位置
FrmContainer = panel;//记录父级控件
}
然后会启动计时器,在计时器执行的具体方法中
private void timer1_Tick(object sender, EventArgs e)
{
//文字从右到左滚动
label1.Left = label1.Left - ;//向左移动
if ((label1.Left + label1.Width) < )//当超出左边界时
label1.Left = FrmContainer.Width;//在右边出现
//文字从下到上滚动
label2.Top = label2.Top - ;//向上移动
if ((label2.Top + label2.Height) < )//当超出上边界时
label2.Top = FrmContainer.Height;//在下边出现
//文字从左到右滚动
if (label3.Left > FrmContainer.Width)//如果超出右边界
label3.Left = - label2.Width;//在左边出现
else
label3.Left = label3.Left + ;//向右移动
//文字从上到下滚动
if (label4.Top > FrmContainer.Height)//如果超出下边界
label4.Top = - label4.Height;//在上边出现
else
label4.Top = label4.Top + ;//向下移动
//如果在屏保情况下,鼠标移动
if ((mouse.X != Control.MousePosition.X || mouse.Y != Control.MousePosition.Y) && panel1.Visible == false)
preview();//恢复预览状态
}
在屏保按钮的点击事件中,就是将窗体的边框去掉,然后将窗体最大化。
private void button2_Click(object sender, EventArgs e)
{
this.FormBorderStyle = FormBorderStyle.None;//窗体无边框
this.WindowState = FormWindowState.Maximized;//窗体最大化
this.BackColor = Color.Black;//设置窗体背景为黑色
multimedia(this);//设置窗体中各控件的样式
timer1.Start();//启动计时器
button1.Visible = false;//隐藏
button2.Visible = false;//隐藏
panel1.Visible = false;//隐藏
mouse = Control.MousePosition;//获取鼠标的屏幕坐标
}
代码下载
https://download.csdn.net/download/BADAO_LIUMANG_QIZHI/12028250
Winform中实现自定义屏保效果(附代码下载)的更多相关文章
- Winform中使用Timer实现滚动字幕效果(附代码下载)
场景 效果 注: 博客主页: https://blog.csdn.net/badao_liumang_qizhi 关注公众号 霸道的程序猿 获取编程相关电子书.教程推送与免费下载. 实现 新建一个Fo ...
- JPA中实现双向多对多的关联关系(附代码下载)
场景 JPA入门简介与搭建HelloWorld(附代码下载): https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/103473937 ...
- 分布式消息总线,基于.NET Socket Tcp的发布-订阅框架之离线支持,附代码下载
一.分布式消息总线以及基于Socket的实现 在前面的分享一个分布式消息总线,基于.NET Socket Tcp的发布-订阅框架,附代码下载一文之中给大家分享和介绍了一个极其简单也非常容易上的基于.N ...
- SpringCloud-使用熔断器防止服务雪崩-Ribbon和Feign方式(附代码下载)
场景 SpringCloud-服务注册与实现-Eureka创建服务注册中心(附源码下载): https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/deta ...
- SpringCloud-创建服务消费者-Feign方式(附代码下载)
场景 SpringCloud-服务注册与实现-Eureka创建服务注册中心(附源码下载): https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/deta ...
- 07.深入浅出 Spring Boot - 数据访问之Mybatis(附代码下载)
MyBatis 在Spring Boot应用非常广,非常强大的一个半自动的ORM框架. 代码下载:https://github.com/Jackson0714/study-spring-boot.gi ...
- Dubbo与SpringBoot整合流程(从实例入手,附代码下载)
场景 Dubbo环境搭建-管理控制台dubbo-admin实现服务监控: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/10362 ...
- 从实例一步一步入门学习SpringCloud的Eureka、Ribbon、Feign、熔断器、Zuul的简单使用(附代码下载)
场景 SpringCloud -创建统一的依赖管理: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/102530574 Sprin ...
- Winform中实现仿XP系统的任务栏菜单效果(附代码下载)
场景 效果 注: 博客主页: https://blog.csdn.net/badao_liumang_qizhi 关注公众号 霸道的程序猿 获取编程相关电子书.教程推送与免费下载. 实现 新建一个Fo ...
随机推荐
- Python函数的默认参数的设计【原创】
在Python教程里,针对默认参数,给了一个“重要警告”的例子: def f(a, L=[]): L.append(a) return L print(f(1)) print(f(2)) print( ...
- linux 进程简介
进程相关知识简介 进程定义: 一个运行中的程序即一个process task struct: 内核存储进程信息的固定格式称为task struct,task struct记录了例如该进程内存下一跳位置 ...
- Selenium多层级的iframe中元素的定位
很多时候我们遇到多层级的iframe就会想各种方法去获取iframe中的元素,但其实很简单就可以做到的,就是一级一级获取就可以了,获取至你需要的那个层级即可,下面看下实际的案例:(转) <fra ...
- Theano at a Glance
Theano一览 Theano是一个Python库,它允许你定义.优化和求值数学表达式,特别是具有多维数组(numpy.ndarray)的数学表达式.对于涉及大量数据的问题,使用Theano可以获得与 ...
- java Random类详解
java Random类位于java.util包下,主要用来生成随机数,本文详解介绍了Random类的用法,希望能帮到大家 Random类 (java.util) Random类中实现的随机算法是伪随 ...
- Ansible Playbooks 介绍 和 使用 二
目录 handlers playbook 案例 2 handlers vars 变量 setup facts 变量使用 案例 inventory 中定义变量 案例 条件测试 when 语句 案例 迭代 ...
- VMware中linux虚拟机的安装
打开安装的VMware 15,点击新建虚拟机 2.选择典型即可,点击下一步 3.选择“稍后安装操作系统”,点击下一步 4.选择想安的版本,点击下一步 5.设置虚拟机名称及安装位置(路径必须全英文!) ...
- Android 寻找Drawable资源的流程
寻找设备对应Drawable资源时,会先在设备对象dpi的drawable文件夹下寻找,如果没找到,会上溯到更高一级dpi文件夹下寻找,上溯最高两级.如果还是没有找到,会寻找noDensity文件夹下 ...
- ThinkPHP多表查询之join方法
现在的目的是要把article_category中的name字段导入到article中去 表yz_article如下 表yz_article_category如下
- Hello! 第一篇博客!
我在博客园开通博客啦 :) 欢迎大家来关注和玩耍,和我互动, Follow 我! 我关心算法和Python!