您的位置:首页 > 其它

巧用内置函数+句柄实现:动态显示窗体效果

2013-04-16 18:31 323 查看
  今天再给大家带来一个小程序:使用系统内置函数+句柄控制、实现动态显示窗体的效果。先简单的来介绍一下功能可以实现的效果:

  1、酷狗音乐用过吧?当我们关闭窗体时、窗体动态关闭:高度先变扁、然后再变窄、最后缩小成为一个光点、   2、QQ2013、登录成功后、窗体以卷帘的方式向上收缩、   3、等等。。。

  当然、在此之前、你也可以自己实现这个效果:例如在窗体上放置几个Timer控件、   在窗体加载时,动态改变窗体的宽高、达到动态显示窗体的效果、然后在窗体关闭时事件中再动态改变窗体的宽高、达到动态关闭窗体的效果、

  但是、这样的写法只会让你的程序变卡、用户体验度大打折扣、

  也许你还会问?提供的函数有多少效果呢?会不会没有我自己用Timer写的效果多呢?   可以实现的效果有:自上向下、自下向上、自左向右、自由向左、滑入滑出、渐变等。详细的下面有介绍。

  既然微软内置了这种效果的对外接口、我们为什么不用呢?因此、下面我来介绍一些这个程序的制作过程:

——————————————————————————————————————

  首先、新建一个WinForm程序、默认会给你一个窗体吧(没有就添加一个)?命名这个窗体名为frmMain.cs、

  然后打开这个窗体的设计器、按下F7、进入这个窗体的代码编辑界面、引入以下命名空间:

缺少“GUYING_HIDE”解决方案

//窗体加载完控件之后、开始执行窗体动画
private void frmMain_Load(object sender, EventArgs e)
{
AnimateWindow(this.Handle, 300,  GUYING_BLEND);    //由于渐变显示、所以不加“GUYING_HIDE”
}

//窗体关闭时、开始执行窗体动画
private void frmMain_FormClosed(object sender, FormClosedEventArgs e)
{
AnimateWindow(this.Handle, 300, GUYING_BLEND + GUYING_HIDE);     //由于渐变隐藏、所以需要加“GUYING_HIDE”
}


  也许你在运行的时候会发现、慢慢显示的时候、窗体部分是动态慢慢显示的、但是、窗体的边缘、也就是窗体的边框、提前显示出来了、什么情况?怎么办?   这是因为我们的函数控制的是当前窗体的句柄、窗体的边框并不包括在内、怎么办?   善意的提醒你一下、窗体有个“FormBorderStyle”属性、

  如果你非要加载显示动画时、不提前显示边框、动画显示后在显示边框、下面是办法:   在构造加载出控件之后 窗体Load显示之前、可以将边框设置为none、动画执行后、再将边框样式设置回去、   下面的就不用我教你了吧、

  因为我主要讲的是这个效果的制作、因此别的我没有考虑进去、   例如、效果常量和效果实现的函数接口引入、我们可以单独写一个公共类、最后、我们用的时候、引用这个公共类中的数据、

  好了、不罗嗦了、如果程序还是没有看懂、可以私下联系我、联系方式在个人资料里。

【原文来自:http://www.cnblogs.com/HackerGuying,尊重原创、转载请注明出处!】
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: