想讓你的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
5.除此之外,關於user32.dll中其他API函數的調用這裡有篇文章介紹得蠻詳細的:Windows API User32.dll詳細介紹
轉自http://www.cnblogs.com/youuuu/archive/2011/06/22/2086768.html