一、設置窗體淡入淡出效果
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自動居中,及特效