【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

 

5.除此之外,关于user32.dll中其他API函数的调用这里有篇文章介绍得蛮详细的:

http://hi.baidu.com/dongdongjiao/blog/item/089ead3dee3363c39e3d62fc.html

转载于:https://www.cnblogs.com/youuuu/archive/2011/06/22/2086768.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值