C#调用API函数给Winform窗体添加动态特效

想让你的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

你可能感兴趣的:(windows,api,user,C#,Blend,WinForm)