欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

C#实现winform渐变效果的方法

程序员文章站 2023-12-16 09:58:28
本文实例实现一个启动画面,采用了显示aform,过一段时间,隐藏这个aform,showdialog下一个bform,closeaform这个方法来做了,不知道大家有没有更...

本文实例实现一个启动画面,采用了显示aform,过一段时间,隐藏这个aform,showdialog下一个bform,closeaform这个方法来做了,不知道大家有没有更好的办法。
设定程序从aform启动:

复制代码 代码如下:
static void main() 

  application.enablevisualstyles(); 
  application.setcompatibletextrenderingdefault(false); 
  application.run(new aform()); 
}

aform中定义如下timer:

startwindowshowtime    hidewindowstart    hidewindowspeed   showwindowstart

定义了他们的属性:

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

下面开始定义这些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的代码

复制代码 代码如下:
public partial class aform: form 

       public form() 
       { 
           initializecomponent();  
       } 
 
       private void start_load(object sender, eventargs e) 
       { 
           startwindowshowtime.start(); 
           hidewindowstart.start(); 
       } 
 
       private void showmainwindow(object sender, eventargs e) 
       { 
           bform showmainwindows = new bform();             
           this.hide(); 
           startwindowshowtime.stop(); 
           hidewindowstart.stop(); 
           hidewindowspeed.stop(); 
           showmainwindows.showdialog(); 
           this.close(); 
       } 
 
       private void hidewindow(object sender, eventargs e) 
       { 
           hidewindowspeed.start(); 
       } 
 
       private void hidewindowspeedstart(object sender, eventargs e) 
       { 
           this.opacity = this.opacity - 0.02; 
       } 
 
       private void showwindow(object sender, eventargs e) 
       { 
           if (this.opacity == 1) 
           { 
               showwindowstart.stop(); 
           } 
           else 
           { 
               this.opacity = this.opacity + 0.02; 
           } 
       } 
}

好了,这个时候大家运行看看,可以看到有淡入淡出效果。
我本来把opacity每次更改的数值设置成了0.1,可是发现如果那样的话淡入淡出不是很润,所以缩小了数值和间隔时间。这样看起来就润多了。自我感觉不错。
如果大家的程序只需要透明,那么只用设置opacity这个就可以了。

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

希望本文所述对大家的c#程序设计有所帮助

上一篇:

下一篇: