想讓你的Winform窗體美化得更炫、更美麗,光是有漂亮的C#皮膚、背景貼圖等這些靜態的部分是遠遠不夠的,還需要有一些動態部分的加持才能讓你的程序界面有更好的用戶體驗。
這裡要介紹的是調用user32.dll中的API函數來給Winform界面添加動態特效。user32.dll是Windows用戶界面相關應用程序接口,用於包括Windows處理,基本用戶界面等特性,如創建窗口和發送消息。與C++一樣,在C#中同樣可以利用user32裡面的一些API函數來開發WINFORM程序。
1.導入user32.dll並聲明API函數AnimateWindow
//導入user32.dll
[System.Runtime.InteropServices.DllImport("user32")]
//聲明API函數
private static extern bool AnimateWindow(IntPtr hwnd, int dwTime, int dwFlags);
AnimateWindow函數裡面的3個傳參的說明如下:
hwnd 界面上控件的句柄
dwTime 窗體特效執行的持續時間(1=1毫秒、1000=1秒)
dwFlags 窗體特效的值
2.dwFlags要傳的參數是一些INT類型的常量,這些常量定義了該特效具體有哪些動作。
//正面_水平方向
const int AW_HOR_POSITIVE = 0x0001;
//負面_水平方向
const int AW_HOR_NEGATIVE = 0x0002;
//正面_垂直方向
const int AW_VER_POSITIVE = 0x0004;
//負面_垂直方向
const int AW_VER_NEGATIVE = 0x0008;
//由中間四周展開或由四周向中間縮小
const int AW_CENTER = 0x0010;
//隱藏對象
const int AW_HIDE = 0x10000;
//顯示對象
const int AW_ACTIVATE = 0x20000;
//拉幕滑動效果
const int AW_SLIDE = 0x40000;
//淡入淡出漸變效果
const int AW_BLEND = 0x80000;
當然編寫代碼的時候可以將這些INT值全部放含在一個枚舉類中,這樣在程序裡引用起來會更方便
3.在程序事件中調用AnimateWindow方法,執行窗體特效。
//動畫——窗體由四周向中心縮小直至消失
//AW_CENTER | AW_HIDE | AW_HOR_NEGATIVE表示三種特效狀態的集合,以“|”間隔,這和C++上調用API函數差不多
//this.Handle為主窗體的句柄,用其他控件的句柄亦可
AnimateWindow(this.Handle, 1000, AW_CENTER | AW_HIDE | AW_HOR_NEGATIVE);
4.這裡給個為Winform窗體添加動態特效的程序例子:Sample