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 ...
随机推荐
- ApplicationInsights入门到精通系列(一)
在11月9号的上海.Net Conf开发者峰会上,我做了一个对Application Insights的Persentation,本来想着快速将其转化为一篇博客无赖最近忙成
- RobotFramework自动化测试框架-Selenium Web自动化(三)关于在RobotFramework中如何使用Selenium很全的总结(下)
本文紧接着RobotFramework自动化测试框架-Selenium Web自动化(二)关于在RobotFramework中如何使用Selenium很全的总结(上)继续分享RobotFramewor ...
- 01-tornado学习笔记-Tornado简介
01-Tornado简介 Tornado是使用Python编写的一个强大的.可扩展的Web服务器.它在处理严峻的网络流量时表现得足够强健,但却在创建和编写时有着足够的轻量级,并能够被用在大量的应用 ...
- Docker 遇到的一些错误
1.version Base not defined in file libdevmapper.so.1.02 在 Centos 6.5 上安装docker-io之后,使用/etc/init.d/do ...
- php mysql 中文乱码解决,数据库显示正常,php调用不正常
一般来说,乱码的出现有2种原因,首先是由于编码(charset)设置错误,导致浏览器以错误的编码来解析,从而出现了满屏乱七八糟的“天书”,其次是文件被以错误的编码打开,然后保存,比如一个文本文件原先是 ...
- django restful framework 一对多方向更新数据库
目录 django restful framework 序列化 一 . 数据模型: models 二. 序列化: serializers 三, 视图: views 四, 路由: urls 五. 测试 ...
- uni-app中使用scroll-view滚到底部时多次触发scrolltolower事件
一.前言.scroll-view基本属性: 前言: 前段时间使用scroll-view可滚动视图区域容器来做多个不同内容的展示(在我这个页面中同时使用了三个scroll-view做数据展示),因为这几 ...
- Java 从入门到进阶之路(十一)
之前的文章我们介绍了一下 Java 中的继承,接下来我们继续看一下 Java 中的继承. 在有些时候,我们通过类继承的方式可以获取父类的方法,但是有些时候父类为我们提供的方法并不完全符合我们的需求,这 ...
- 本土化App名稱和icon
本土化app名稱這個容易 第一步配置工程需要本土化的語言. 第二步,新建本土化文件,文件名稱是有要求的,文件名字命名为InfoPlist,且必须是这个名字.這樣系統會自動去讀取該文件中的內容 對新建的 ...
- React Context上下文
目录 前言 一 context旧版使用步骤 1.1 根组件childContextTypes属性 1.2 根组件getChildContext方法 1.3 子组件contextTypes静态属性 1. ...