Winform窗口的淡入淡出特效及窗口位置居中功能

一、設置窗體淡入淡出效果

1.1、窗體淡入淡出效果核心腳本

/***
*	Title:"三維可視化" 項目
*		主題:【視圖層】窗體淡入彈出
*	Description:
*		功能:實現窗體的淡入淡出效果
*	Date:2020
*	Version:1.0版本
*	Author:Coffee
*	Modify Recoder:
*/

using System;
using System.Runtime.InteropServices;

namespace View
{
    //窗體的淡入淡出效果
    class FormFadeInorout
    {
        public const Int32 AW_HOR_POSITIVE = 0x00000001; // 從左到右打開窗口
        public const Int32 AW_HOR_NEGATIVE = 0x00000002; // 從右到左打開窗口
        public const Int32 AW_VER_POSITIVE = 0x00000004; // 從上到下打開窗口
        public const Int32 AW_VER_NEGATIVE = 0x00000008; // 從下到上打開窗口
        public const Int32 AW_CENTER = 0x00000010; //若使用了AW_HIDE標誌,則使窗口向內重疊;若未使用AW_HIDE標誌,則使窗口向外擴展。
        public const Int32 AW_HIDE = 0x00010000; //隱藏窗口,缺省則顯示窗口。
        public const Int32 AW_ACTIVATE = 0x00020000; //激活窗口。在使用了AW_HIDE標誌後不要使用這個標誌。
        public const Int32 AW_SLIDE = 0x00040000; //使用滑動類型。缺省則爲滾動動畫類型。當使用AW_CENTER標誌時,這個標誌就被忽略。
        public const Int32 AW_BLEND = 0x00080000; //使用淡出效果。只有當hWnd爲頂層窗口的時候纔可以使用此標誌。
        [DllImport("user32.dll", CharSet = CharSet.Auto)]
        public static extern bool AnimateWindow
         (
            IntPtr hwnd, // 窗口句柄
            int dwTime, // 淡入淡出持續時間(單位:毫秒)
            int dwFlags // 淡入淡出特效類型
          );


    }//Class_end
}

1.2、窗體淡入淡出效果使用方法

注意:窗體淡入淡出的持續時間可以自行修改

①在窗體加載時使用窗體淡入效果:

 private void Form1_Load(object sender, EventArgs e)
        {
            //淡入窗體
            FormFadeInorout.AnimateWindow(this.Handle, 500, FormFadeInorout.AW_BLEND);
        }

②在關閉窗體是使用窗體淡出效果 

 private void Form_FormClosing(object sender, FormClosingEventArgs e)
        {
            //淡出窗體
            FormFadeInorout.AnimateWindow(this.Handle, 360, FormFadeInorout.AW_SLIDE | FormFadeInorout.AW_HIDE | FormFadeInorout.AW_BLEND);
        }

二、Winform窗體的居中功能

2.1、Winform窗體根據顯示的屏幕居中

①使用系統自帶的居中方法:

需要居中的窗體名稱.StartPosition = FormStartPosition.CenterScreen;

②獲取屏幕長和寬然後除以2計算設置

int xWidth = SystemInformation.PrimaryMonitorSize.Width;//獲取顯示器屏幕寬度
int yHeight = SystemInformation.PrimaryMonitorSize.Height;//高度

2.2、Winform窗體居於父窗體的中間

//設置窗體相對於父窗體居中
需要居中的窗體名稱.StartPosition = FormStartPosition.CenterParent;
//顯示窗體
需要居中的窗體名稱.ShowDialog();

2.3、實現窗體居中的核心腳本

/***
*	Title:"三維可視化" 項目
*		主題:【視圖層】窗體基礎操作
*	Description:
*		功能:
*		    1、實現窗體基於屏幕居中
*		    2、實現窗體居於父窗體中間
*	Date:2020
*	Version:1.0版本
*	Author:Coffee
*	Modify Recoder:
*/

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace View
{
    class FormBaseOPC
    {
        /// <summary>
        /// 1-窗體屏幕居中
        /// </summary>
        /// <param name="form">需要居中的窗體</param>
        public static void SetScreenMiddle2(Form form)
        {
            if (form!=null)
            {
                //獲取屏幕設置居中效果
                form.SetBounds((Screen.GetBounds(form).Width / 2) - (form.Width / 2),
                    (Screen.GetBounds(form).Height / 2) - (form.Height / 2),
                    form.Width, form.Height, BoundsSpecified.Location);
            }
        }

        /// <summary>
        /// 1-窗體屏幕居中(系統自帶)
        /// </summary>
        /// <param name="form">需要居中的窗體</param>
        public static void SetScreenMiddle(Form form)
        {
            if (form!=null)
            {
                form.StartPosition = FormStartPosition.CenterScreen;
            }
        }

        /// <summary>
        /// 2-設置相對於窗體居中且打開
        /// </summary>
        /// <param name="form">需要居中的窗體</param>
        public static void SetFormMiddle(Form form)
        {
            if (form!=null)
            {
                //設置窗體相對於父窗體居中
                form.StartPosition = FormStartPosition.CenterParent;
                //顯示窗體
                form.ShowDialog();
                //設置焦點爲當前窗體
                form.Focus();
            } 
        }

    }//Class_end
}

使用方法

①在窗體初始化時:調用窗體基於屏幕居中的方法

       public Form1()
        {
            InitializeComponent();
            //設置窗體屏幕居中
            FormBaseOPC.SetScreenMiddle(this);
        }

       public Form1()
        {
            InitializeComponent();
            //設置窗體屏幕居中
            FormBaseOPC.SetScreenMiddle2(this);
        }

②在按鈕觸發需要打開子窗體時候:調用實現窗體居於父窗體中間方法

       //打開設置窗體按鈕
        private void Btn_Settings_Click(object sender, EventArgs e)
        {
            if (form_IPSettings==null || form_IPSettings.IsDisposed)
            {
                form_IPSettings = new Form_IPSettings();
            }
            //設置相對於窗體居中且打開
            FormBaseOPC.SetFormMiddle(form_IPSettings);
        }

 

注意:淡入淡出特效參考:C# winform自動居中,及特效

 

 

 

 

 

 

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章