Winform中實現自定義屏保效果(附代碼下載)

場景

效果

 

 

注:編程

博客主頁:
https://blog.csdn.net/badao_liumang_qizhi
關注公衆號
霸道的程序猿
獲取編程相關電子書、教程推送與免費下載。 佈局

實現

新建form窗體,窗體中設計佈局以下,一個Panel中拖拽四個label,而後添加兩個Button,再添加一個Timer控件。字體

 

 

在窗體的Load事件中將Label進行隱藏this

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;
        }

 

在預覽按鈕的點擊事件中,對預覽進行初始化。spa

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();//啓動計時器
        }

 

會首先執行設置窗體中各控件的樣式的方法.net

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();//恢復預覽狀態
        }

 

在屏保按鈕的點擊事件中,就是將窗體的邊框去掉,而後將窗體最大化。code

 

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/12028250orm

相關文章
相關標籤/搜索