当前位置: 移动技术网 > IT编程>开发语言>.net > Winform中实现自定义屏保效果(附代码下载)

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

2019年12月12日  | 移动技术网IT编程  | 我要评论

级进模具,牧羊人奢华时尚馆,蒋晓娟

场景

效果

 

 

注:

博客主页:

关注公众号
霸道的程序猿
获取编程相关电子书、教程推送与免费下载。

实现

新建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 = 20;//设置字体大小
            }
            else
            {
                isbool = true;//显示
                fontsize = 10;//设置字体大小
            }
            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 / 4;//设置当前控件的显示位置
            label3.top = (panel.height / 4) * 3;//设置当前控件的显示位置
            label3.left = 0 - label2.width;//设置当前控件的显示位置
            label4.left = (panel.width / 4) * 3;//设置当前控件的显示位置
            label4.top = 0 - label2.height;//设置当前控件的显示位置
            label2.left = panel.width / 4;//设置当前控件的显示位置
            frmcontainer = panel;//记录父级控件
        }

 

然后会启动计时器,在计时器执行的具体方法中

private void timer1_tick(object sender, eventargs e)
        {
            //文字从右到左滚动
            label1.left = label1.left - 2;//向左移动
            if ((label1.left + label1.width) < 1)//当超出左边界时
                label1.left = frmcontainer.width;//在右边出现
            //文字从下到上滚动
            label2.top = label2.top - 1;//向上移动
            if ((label2.top + label2.height) < 1)//当超出上边界时
                label2.top = frmcontainer.height;//在下边出现
            //文字从左到右滚动
            if (label3.left > frmcontainer.width)//如果超出右边界
                label3.left = 0 - label2.width;//在左边出现
            else
                label3.left = label3.left + 2;//向右移动
            //文字从上到下滚动
            if (label4.top > frmcontainer.height)//如果超出下边界
                label4.top = 0 - label4.height;//在上边出现
            else
                label4.top = label4.top + 1;//向下移动
            //如果在屏保情况下,鼠标移动
            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

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网