Windows Form 实现透明效果,渐变效果,淡入淡出效果的实现

在用到vs 2005的兴奋过程中,想给程序做个启动画面,我采用了显示Aform,过一段时间,隐藏这个Aform,showdialog下一个Bform,closeAForm这个方法来做了,不知道大家有没有跟好的办法。

设定程序丛Aform启动:
None.gif          static   void  Main()
ExpandedBlockStart.gifContractedBlock.gif        
dot.gif {
InBlock.gif            Application.EnableVisualStyles();
InBlock.gif            Application.SetCompatibleTextRenderingDefault(
false);
InBlock.gif            Application.Run(
new Aform());
ExpandedBlockEnd.gif        }


我在AForm中定义如下timer
%7BF6FEED5D-4A51-4989-ACD7-8A24D3020FE2%7D.JPG

定义了他们的属性
 StartWindowShowTime(显示Aform的时间长度)
Enabled=True
Interval=5000 (100=1秒)

HideWindowStart (开始隐藏Aform的过程)
Enabled=True
Interval=4500

HideWindowSpeed (隐藏Aform的渐变间隔)
Enabled=False
Interval=10

ShowWindowStart  (显示AForm的渐变间隔)
Enabled=True
Interval=10

Ok,   下面开始定义这些timer的Tick
在Events里面可以直接填写,timer就这一个,也可以后台写,不过我觉得在这里填写比较方便,而且可以自动生成方法的声明,不用找了。偷懒一下。

StartWindowShowTime
Tick:ShowMainwindow

HideWindowStart
Tick:HideWindow

HideWindowSpeed
Tick:HideWindowSpeedStart

ShowWindowStart
Tick:ShowWindow

好了,到这里我要说Windows Form 实现透明效果,渐变效果,淡入淡出效果的实现最重要一员了,那就是Form属性里的Opacity,用的就是这个。我考证过,只有2000以上的系统支持这个属性。

 我们先将Aform的Opacity设置成0,好了开始写Aform的代码

None.gif      public  partial  class  Aform: Form
ExpandedBlockStart.gifContractedBlock.gif    
dot.gif {
InBlock.gif        
public Form()
ExpandedSubBlockStart.gifContractedSubBlock.gif        
dot.gif{
InBlock.gif            InitializeComponent(); 
InBlock.gif            

InBlock.gif            
ExpandedSubBlockEnd.gif        }

InBlock.gif
InBlock.gif        
private void Start_Load(object sender, EventArgs e)
ExpandedSubBlockStart.gifContractedSubBlock.gif        
dot.gif{
InBlock.gif            StartWindowShowTime.Start();
InBlock.gif            HideWindowStart.Start();
ExpandedSubBlockEnd.gif        }

InBlock.gif
InBlock.gif        
private void ShowMainwindow(object sender, EventArgs e)
ExpandedSubBlockStart.gifContractedSubBlock.gif        
dot.gif{
InBlock.gif            Bform showmainwindows 
= new Bform();            
InBlock.gif            
this.Hide();
InBlock.gif            StartWindowShowTime.Stop();
InBlock.gif            HideWindowStart.Stop();
InBlock.gif            HideWindowSpeed.Stop();
InBlock.gif            showmainwindows.ShowDialog();
InBlock.gif            
this.Close();
ExpandedSubBlockEnd.gif        }

InBlock.gif
InBlock.gif        
private void HideWindow(object sender, EventArgs e)
ExpandedSubBlockStart.gifContractedSubBlock.gif        
dot.gif{
InBlock.gif            HideWindowSpeed.Start();
ExpandedSubBlockEnd.gif        }

InBlock.gif
InBlock.gif        
private void HideWindowSpeedStart(object sender, EventArgs e)
ExpandedSubBlockStart.gifContractedSubBlock.gif        
dot.gif{
InBlock.gif            
this.Opacity = this.Opacity - 0.02;
ExpandedSubBlockEnd.gif        }

InBlock.gif
InBlock.gif        
private void ShowWindow(object sender, EventArgs e)
ExpandedSubBlockStart.gifContractedSubBlock.gif        
dot.gif{
InBlock.gif            
if (this.Opacity == 1)
ExpandedSubBlockStart.gifContractedSubBlock.gif            
dot.gif{
InBlock.gif                ShowWindowStart.Stop();
ExpandedSubBlockEnd.gif            }

InBlock.gif            
else
ExpandedSubBlockStart.gifContractedSubBlock.gif            
dot.gif{
InBlock.gif                
this.Opacity = this.Opacity + 0.02;
ExpandedSubBlockEnd.gif            }

ExpandedSubBlockEnd.gif        }

InBlock.gif
ExpandedBlockEnd.gif    }

好了,这个时候大家运行看看,嘿嘿淡入淡出。

我本来把Opacity每次更改的数值设置成了0.1,可是发现如果那样的话淡入淡出不是很润,所以缩小了数值和间隔时间。这样看起来就润多了。自我感觉不错。

如果大家的程序只需要透明,那么只用设置Opacity这个就可以了。

渐变和淡入淡出照猫画虎用timer和Opacity这个配合一下,就可以做出来了。

小心得,和大家分享一下。很希望和大家交个朋友。

大家记得联系我啊!

大胆一下,把文章发到首页了!怕怕!
 

转载于:https://www.cnblogs.com/tishifu/archive/2005/11/26/284948.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值