分享
 
 
 

动画启动窗口的类(源码)

王朝other·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

这个类相当的简单,所以我只把源码完整的贴了出来.

必要的地方,我会作相应说明.

==============================================================

* 说明:

*

* 1.命名空间: Apc_AniWindow

* 类名 : AniWindow

*

* 2.声明: AniWindow a=new AniWindow(this.Handle,100,1,this);

*

* 3.参数说明:AniWindow(窗口句柄,动画样式,打开或关闭标志,实例表单);

* 窗口句柄: this.Handle

* 动画样式: 0 -> 普通显示

* 1 -> 从左向右显示

* 2 -> 从右向左显示

* 3 -> 从上到下显示

* 4 -> 从下到上显示

* 5 -> 透明渐变显示

* 6 -> 从中间向四周

* 7 -> 左上角伸展

* 8 -> 左下角伸展

* 9 -> 右上角伸展

* 10 -> 右下角伸展

* 开关标志: 0为关闭窗口 1为打开窗口

* 实例表单: 为了去除Label的BUG, 取值 this

*

* ===============================================================

*

* 另有不得不说的BUG,目前我只知当FORM上有可视的Label的时候,会出错,现已解决.

* 但不知道还有没有别的控件会引发错误,

*

* 还有,如果是Form上的Label,程序会自动设为不可视,如果是Panel里面的....X_X 还是会出错.

* 所以,如果你的程序里有LABEL,还是在PANEL中,,,那你只好自己写代码来实现可视不可视喽...

*

******************************************************************/

using System;

using System.Windows.Forms;

namespace Apc_AniWindow

{

/// <summary>

/// Class1 的摘要说明。

/// </summary>

public class AniWindow

{

[System.Runtime.InteropServices.DllImport("user32")]

private static extern bool AnimateWindow(IntPtr hwnd,int dwTime, int dwFlags);

private const int AW_HOR_POSITIVE = 0x0001;

private const int AW_HOR_NEGATIVE = 0x0002;

private const int AW_VER_POSITIVE = 0x0004;

private const int AW_VER_NEGATIVE = 0x0008;

private const int AW_CENTER = 0x0010;

private const int AW_HIDE = 0x10000;

private const int AW_ACTIVATE = 0x20000;

private const int AW_SLIDE = 0x40000;

private const int AW_BLEND = 0x80000;

private int CloseOpen=0x20000;

public AniWindow(IntPtr hwnd,int dwFlags,int CloseOrOpen,System.Windows.Forms.Form myform)

{

try

{

if(CloseOrOpen==1)

{

foreach(System.Windows.Forms.Control mycontrol in myform.Controls)

{

string m=mycontrol.GetType().ToString();

m=m.Substring(m.Length-5);

if(m=="Label")

{

mycontrol.Visible=false; //这里是在动画效果之前,把表单上可视的LABEL设为不可视

}

}

}

//打开or关闭 0是关闭 1是打开

if(CloseOrOpen==0){CloseOpen=0x10000;}

if(dwFlags==100)

{

int zz=10;

Random a=new Random();

dwFlags=(int)a.Next(zz);

}

switch(dwFlags)

{

case 0://普通显示

AnimateWindow(hwnd,200,AW_ACTIVATE);

break;

case 1://从左向右显示

AnimateWindow(hwnd,200,AW_HOR_POSITIVE|CloseOpen);

break;

case 2://从右向左显示

AnimateWindow(hwnd,200,AW_HOR_NEGATIVE|CloseOpen);

break;

case 3://从上到下显示

AnimateWindow(hwnd,200,AW_VER_POSITIVE|CloseOpen);

break;

case 4://从下到上显示

AnimateWindow(hwnd,200,AW_VER_NEGATIVE|CloseOpen);

break;

case 5://透明渐变显示

AnimateWindow(hwnd,200,AW_BLEND|CloseOpen);

break;

case 6://从中间向四周

AnimateWindow(hwnd,200,AW_CENTER|CloseOpen);

break;

case 7://左上角伸展

AnimateWindow(hwnd,200,AW_SLIDE|AW_HOR_POSITIVE|AW_VER_POSITIVE|CloseOpen);

break;

case 8://左下角伸展

AnimateWindow(hwnd,200,AW_SLIDE|AW_HOR_POSITIVE|AW_VER_NEGATIVE|CloseOpen);

break;

case 9://右上角伸展

AnimateWindow(hwnd,200,AW_SLIDE|AW_HOR_NEGATIVE|AW_VER_POSITIVE|CloseOpen);

break;

case 10://右下角伸展

AnimateWindow(hwnd,200,AW_SLIDE|AW_HOR_NEGATIVE|AW_VER_NEGATIVE|CloseOpen);

break;

}

if(CloseOrOpen==1)

{

foreach(System.Windows.Forms.Control mycontrol in myform.Controls)

{

string m=mycontrol.GetType().ToString();

m=m.Substring(m.Length-5);

if(m=="Label")

{

mycontrol.Visible=true; //这里恢复LABEL的可视.

}

}

}

}

catch{}

}

}

}

把这代码,贴到.NET环境中, 直接编译就可以了.

或者直接放在代码中,用就可以了.

欢迎交流.

另外,我用 form的 region属性,也做了一个,普通的动画例子,但是没有API的效果好,(但是绝对没有BUG,比如label这样的错)

但可惜的是,一指定 form的 region , 当窗体改变大小时, 还要重新设置一下, region

哎.....不知道有什么好的办法..更好的办法.....

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有