CSkin博客

标题: 【窗体特效案例】C#利用api实现各种窗体特效 [打印本页]

作者: 乔克斯    时间: 2014-11-18 10:49
标题: 【窗体特效案例】C#利用api实现各种窗体特效
【窗体特效案例】C#利用api实现各种窗体特效案例
介绍:
这里主要利用API函数Animate Window实现窗体左右,上下,扩展,淡入滑动或滚动动画效果,话不多说上图。

效果图:


API代码:
[C#] 纯文本查看 复制代码
using System;
using System.Collections.Generic;
using System.Runtime.InteropServices;
using System.Text;

namespace AnimationForm
{
    public class Win32
    {
        /// <summary>
        /// 执行动画
        /// </summary>
        /// <param name="whnd">控件句柄</param>
        /// <param name="dwtime">动画时间</param>
        /// <param name="dwflag">动画组合名称</param>
        /// <returns>bool值,动画是否成功</returns>
        [DllImport("user32.dll")]
        public static extern bool AnimateWindow(IntPtr whnd, int dwtime, int dwflag);

        /// <summary>
        /// 从左到右显示
        /// </summary>
        public const Int32 AW_HOR_POSITIVE = 0x00000001;
        /// <summary>
        /// 从右到左显示
        /// </summary>
        public const Int32 AW_HOR_NEGATIVE = 0x00000002;
        /// <summary>
        /// 从上到下显示
        /// </summary>
        public const Int32 AW_VER_POSITIVE = 0x00000004;
        /// <summary>
        /// 从下到上显示
        /// </summary>
        public const Int32 AW_VER_NEGATIVE = 0x00000008;
        /// <summary>
        /// 若使用了AW_HIDE标志,则使窗口向内重叠,即收缩窗口;否则使窗口向外扩展,即展开窗口
        /// </summary>
        public const Int32 AW_CENTER = 0x00000010;
        /// <summary>
        /// 隐藏窗口,缺省则显示窗口
        /// </summary>
        public const Int32 AW_HIDE = 0x00010000;
        /// <summary>
        /// 激活窗口。在使用了AW_HIDE标志后不能使用这个标志
        /// </summary>
        public const Int32 AW_ACTIVATE = 0x00020000;
        /// <summary>
        /// 使用滑动类型。缺省则为滚动动画类型。当使用AW_CENTER标志时,这个标志就被忽略
        /// </summary>
        public const Int32 AW_SLIDE = 0x00040000;
        /// <summary>
        /// 透明度从高到低
        /// </summary>
        public const Int32 AW_BLEND = 0x00080000;
    }
}


案例资源下载: C#动画特效案例.rar (465.82 KB, 下载次数: 953, 售价: 1 金钱)

作者: 老段    时间: 2014-11-18 10:56
头条??
作者: Blogger    时间: 2014-11-18 10:58
挺好看的。谢谢
作者: HJL    时间: 2014-11-18 11:58
请问是不是XP系统也支持这些特效?
作者: jay.pbsh    时间: 2014-11-18 12:02
mark
作者: 乔克斯    时间: 2014-11-18 15:35
HJL 发表于 2014-11-18 11:58
请问是不是XP系统也支持这些特效?

支持
作者: hhjj331    时间: 2014-11-22 22:20
好像不错啊·!!~
作者: aolongxue    时间: 2014-11-24 18:39
太酷了~!~!
作者: simple    时间: 2014-11-27 23:47
不错不错,这些效果相当有用啊
作者: Jouz    时间: 2014-12-1 14:09
感谢分享
作者: ririkaka    时间: 2014-12-4 23:01
挺好看的。谢谢
作者: jh1996    时间: 2014-12-12 17:34
感谢分享~
作者: 腾讯科技    时间: 2014-12-15 01:36
直接使用的吗
作者: 乔克斯    时间: 2014-12-15 14:11
腾讯科技 发表于 2014-12-15 01:36
直接使用的吗

是的
作者: anykn    时间: 2014-12-24 17:00
不错不错,这些效果相当有用啊
作者: thinhils    时间: 2014-12-30 10:55
非常好...
作者: thinhils    时间: 2014-12-30 10:55
非常好...
作者: thinhils    时间: 2014-12-30 10:56
good ,very nice
作者: whx408    时间: 2015-1-7 10:50
好像不错啊·!!~
作者: 天高任鸟飞I    时间: 2015-1-11 23:10
动画特效 这个应该很棒的 哈哈谢谢
作者: Wushao    时间: 2015-2-10 09:40
good,学习了,感谢封箱
作者: shuaikaiyuan    时间: 2015-3-23 15:04
挺好看的  不过你们闪屏的问题是怎么解决的啊
作者: 乔克斯    时间: 2015-3-23 16:01
shuaikaiyuan 发表于 2015-3-23 15:04
挺好看的  不过你们闪屏的问题是怎么解决的啊

在控件或窗体初始化的时候加这段代码
[C#] 纯文本查看 复制代码

            //设置自定义控件Style
            this.SetStyle(ControlStyles.ResizeRedraw, true);//调整大小时重绘
            this.SetStyle(ControlStyles.OptimizedDoubleBuffer, true);// 双缓冲
            this.SetStyle(ControlStyles.AllPaintingInWmPaint, true);// 禁止擦除背景
            this.SetStyle(ControlStyles.SupportsTransparentBackColor, true);// 背景可透明


作者: shuaikaiyuan    时间: 2015-3-23 16:45
乔克斯 发表于 2015-3-23 16:01
在控件或窗体初始化的时候加这段代码
[mw_shl_code=csharp,true]
            //设置自定义控件Style

我开启了   如果控件过多了话就这样子了(控件背景色已经设置成默认了)。。    一直惆怅怎么解决他好

QQ截图20150323160601.png (24.5 KB, 下载次数: 79)

QQ截图20150323160601.png

作者: 乔克斯    时间: 2015-3-23 18:32
shuaikaiyuan 发表于 2015-3-23 16:45
我开启了   如果控件过多了话就这样子了(控件背景色已经设置成默认了)。。    一直惆怅怎么解决他好 ...

这串代码是双缓冲,加在控件或窗体初始化的地方。
[C#] 纯文本查看 复制代码

            //设置自定义控件Style
            this.SetStyle(ControlStyles.ResizeRedraw, true);//调整大小时重绘
            this.SetStyle(ControlStyles.OptimizedDoubleBuffer, true);// 双缓冲
            this.SetStyle(ControlStyles.AllPaintingInWmPaint, true);// 禁止擦除背景


作者: shuaikaiyuan    时间: 2015-3-24 11:45
乔克斯 发表于 2015-3-23 18:32
这串代码是双缓冲,加在控件或窗体初始化的地方。
[mw_shl_code=csharp,true]
            //设置自定义 ...

比如A窗体中加入了Bpanel
Bpanel中加入了Cpanel
Cpanel中加入了控件D UserCon
那我为防止页面不卡是在D中加入双缓冲
还是在 ABCD中都加入?
作者: 乔克斯    时间: 2015-3-24 13:05
shuaikaiyuan 发表于 2015-3-24 11:45
比如A窗体中加入了Bpanel
Bpanel中加入了Cpanel
Cpanel中加入了控件D UserCon

全都加入是最好的。
作者: 84020974    时间: 2015-3-31 18:21
看起来不错
作者: ydong95    时间: 2015-4-2 16:38
下载来用用,学习一下。
作者: hi5438    时间: 2015-4-2 23:52
貌似用的windows api
作者: imjimmy    时间: 2015-4-3 01:39
感谢分享   应该会用到   哈哈哈
作者: kiseeyou    时间: 2015-4-11 09:55
不错不错,这些效果相当有用啊
作者: bbsjieqi    时间: 2015-4-17 17:12
下载了,谢谢分享
作者: bbsjieqi    时间: 2015-4-17 17:12
下载了,谢谢分享
作者: gisnewbie    时间: 2015-4-18 19:44
不在loaded事件调用AnimateWindow 窗体控件不显示,怎么解决呢?
作者: 乔克斯    时间: 2015-4-18 20:54
gisnewbie 发表于 2015-4-18 19:44
不在loaded事件调用AnimateWindow 窗体控件不显示,怎么解决呢?

在Load或者无参构造函数中写才行。
作者: jjfshebedo    时间: 2015-4-23 16:57
请问是不是XP系统也支持这些特效?
作者: 乔克斯    时间: 2015-4-24 09:34
jjfshebedo 发表于 2015-4-23 16:57
请问是不是XP系统也支持这些特效?

是的
作者: wangjunjx8868    时间: 2015-4-30 14:49
下载了 感谢分享!
作者: lu18021407687    时间: 2015-4-30 15:11
是要回复才能看到下载地址么
作者: Tom    时间: 2015-4-30 15:13
顶!!!
作者: 张守清    时间: 2015-5-7 01:13
3Q,太好了
作者: becklee    时间: 2015-5-8 09:30
为程序界面启动增色不少啊
作者: KioChong    时间: 2015-6-18 20:09
看来是必须支持的。。。
作者: fzwhk    时间: 2015-6-19 17:45
好好
作者: Peter.luo    时间: 2015-6-21 00:10
不错,界面挺好看的,支持一下
作者: JOJO    时间: 2015-6-24 10:28
谢谢分享。。很不错
作者: sniper808    时间: 2015-6-24 10:44
谢谢分享,学习一下。
作者: HELLER    时间: 2015-6-30 22:18
效果不错
作者: quzhigang    时间: 2015-7-3 08:55
不错哦。
作者: q717021    时间: 2015-7-13 23:00
不错不错,这些效果相当有用啊
作者: lztbbq    时间: 2015-7-14 10:29
效果很好看
作者: xx205    时间: 2015-10-12 22:26
厉害,学习一下
作者: ggosgg    时间: 2015-10-31 21:25
小玩意思,学习下API也不错。
作者: 在回忆中的记忆    时间: 2015-11-2 08:30
看着感觉不错啊!
作者: dqzg12300    时间: 2015-11-16 16:44
感觉不错呀。耐克
作者: 1989liu1103    时间: 2015-11-17 09:00
看起来不错的样子,收藏
作者: 1989liu1103    时间: 2015-11-17 09:00
看起来不错的样子,收藏
作者: 1989liu1103    时间: 2015-11-17 09:00
看起来不错的样子,收藏
作者: 1989liu1103    时间: 2015-11-17 09:01
看起来不错的样子,收藏
作者: 愤怒的萝卜    时间: 2015-11-17 09:17
看起来不错的样子,收藏
作者: 见钱开眼    时间: 2015-11-17 14:02
太酷了~!~!
作者: icanplay    时间: 2015-11-21 07:19
感谢分享
作者: syzlhh    时间: 2015-12-4 23:08
感谢楼主分享啊
作者: syzlhh    时间: 2015-12-4 23:09
感谢分享啊
作者: shc    时间: 2015-12-19 17:44
我要看看这么样子
作者: zl1993    时间: 2016-5-29 00:49
学习,学习。。
作者: 381947601    时间: 2016-5-29 16:50
666666666666666666
作者: skyxin1314    时间: 2016-5-29 17:23
win32,学习学习
作者: 君子小白    时间: 2016-10-18 11:23
下来,学习学习
作者: NewComer    时间: 2016-10-18 13:53
看似很简单,但是很实用!
作者: sanliang    时间: 2016-10-19 09:52
下载一个看看。
作者: Aisa_Thanatos    时间: 2016-11-11 00:26
谢谢分享
作者: darker    时间: 2016-11-11 09:30
好厉害
作者: 724405566    时间: 2016-11-11 10:09
谢谢贡献源码啊
作者: 724405566    时间: 2016-11-11 10:10
谢谢贡献源码啊
作者: xiandaye    时间: 2016-12-27 01:22
这个我也会哦,不过谢谢LZ
作者: tolwm    时间: 2016-12-27 10:29
感谢分享, 有用到!            
作者: 天空中的星星    时间: 2017-3-15 10:54
谢谢楼主的分享
作者: 别动不然杀了你    时间: 2017-3-29 13:49
学习一下啊!学习
作者: DHorse    时间: 2018-1-20 22:40
棒棒的~!
作者: jacosun    时间: 2018-1-22 23:30
不錯不錯
作者: humbert    时间: 2018-2-25 07:10
mark!!!
作者: okeyes    时间: 2018-3-20 16:12
谢谢楼主....
作者: zxd36383    时间: 2018-3-22 09:06
好东西.全代码的
作者: zxd36383    时间: 2018-3-22 09:06
好东西.全代码的
作者: zxd36383    时间: 2018-3-22 09:06
好恭喜.全代码的东西就是好啊
作者: zxd36383    时间: 2018-3-22 09:24
又要分.哎呀
作者: 呔O有妖气    时间: 2018-3-25 21:48
多好的论坛,多好的大佬们啊
作者: zhqq0513    时间: 2018-7-5 09:35
不错,有了这个就不用写那么多代码了
作者: 喵喵喵?    时间: 2018-7-5 21:27
感谢分享
作者: Eric.lu    时间: 2018-8-21 09:37
挺好看的。谢谢
作者: Yenter    时间: 2018-8-25 16:22
厉害了啊
作者: li599020295    时间: 2018-8-26 03:14
我先看看了
作者: 881966    时间: 2018-12-4 19:19
谢谢分享,学习学习
作者: jacksonwong    时间: 2019-5-18 12:55
感谢分享了!
作者: 小白兔    时间: 2019-5-25 22:53
支持一下
作者: 007老五    时间: 2019-6-25 20:36
版主说回复有金币
作者: LiuKeluo    时间: 2019-7-19 19:44
666,太实用了
作者: 303194927    时间: 2020-3-31 08:57
先马再看




欢迎光临 CSkin博客 (http://bbs.cskin.net/) Powered by Discuz! X3.2