【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