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

本文实例实现一个启动画面,采用了显示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#程序设计有所帮助

(0)

相关推荐

  • WinForm实现自定义右下角提示效果的方法

    本文实例讲述了WinForm实现自定义右下角提示效果的方法.分享给大家供大家参考.具体实现方法如下: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace IcoFl

  • C#实现WinForm禁止最大化、最小化、双击标题栏、双击图标等操作的方法

    本文实例讲述了C#实现WinForm禁止最大化.最小化.双击标题栏.双击图标等操作的方法.分享给大家供大家参考.具体实现方法如下: protected override void WndProc(ref Message m) { if (m.Msg==0x112) { switch ((int) m.WParam) { //禁止双击标题栏关闭窗体 case 0xF063: case 0xF093: m.WParam = IntPtr.Zero; break; //禁止拖拽标题栏还原窗体 case

  • WinForm实现窗体最大化并遮盖任务栏的方法

    本文实例讲述了WinForm实现窗体最大化并遮盖任务栏的方法.分享给大家供大家参考.具体实现方法如下: using System; using System.Windows.Forms; using System.Drawing; namespace CSImageFullScreenSlideShow { public class FullScreen { private FormWindowState winState; private FormBorderStyle brdStyle; p

  • WinForm实现状态栏跑马灯效果的方法示例

    本文实例讲述了WinForm实现状态栏跑马灯效果的方法.分享给大家供大家参考,具体如下: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace WindowsForm

  • WinForm实现仿视频播放器左下角滚动新闻效果的方法

    本文实例讲述了WinForm实现仿视频播放器左下角滚动新闻效果的方法.分享给大家供大家参考.具体实现方法如下: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using Syst

  • Winform窗体效果实例分析

    本文实例分析了Winform窗体效果.分享给大家供大家参考.具体如下: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; namespace WindowsApplication4 { public partial cl

  • 用 C# Winform做出全透明的磨砂玻璃窗体效果代码

    首先, 调用系统 API, 这里如果要引用神马的, 就不一一列出了, 大家自己引用一下. 复制代码 代码如下: [StructLayout(LayoutKind.Sequential)] public struct MARGINS { public int Left; public int Right; public int Top; public int Bottom; } [DllImport("dwmapi.dll", PreserveSig = false)] public s

  • winform下实现win7 Aero磨砂效果实现代码

    效果图: 复制代码 代码如下: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.ServiceModel; using System.Runtime.InteropServices; name

  • Winform实现鼠标可穿透的窗体镂空效果

    今天找到一个名叫LICEcap的录屏软件,录制界面是这样的: 这个炫酷的空心窗口就是镜头,调整好大小,然后对准需要录制的地方按下Record就可以生成gif了. 卧槽太NB了我也要做一个! 根据StackOverflow站的提示(在这里),我们需要使用一个在Windows2000及之后平台可用的,用以实现不规则窗体的分层窗口API (SetLayerWindowAttributes).根据百度我们先需要使用一个名为SetWindowLong的Win32 API来把窗体设定为分层窗体. 为了在.N

  • WinForm实现同时让两个窗体有激活效果的特效实例

    本文实例讲述了WinForm实现同时让两个窗体有激活效果的特效.主要采用windows api实现一个窗体激活的时候给另外一个发消息.分享给大家供大家参考. 具体实现方法如下: using System; using System.Windows.Forms; using System.Runtime.InteropServices; namespace WindowsApplication43 { public partial class Form1 : Form { Form frm =nu

  • C# WinForm实现Win7 Aero透明效果代码

    在Vista系统之后,微软为窗体程序提供了Aero磨砂的效果,如下图.那么用C#如何来实现这种磨砂效果呢? 背景为我的桌面 那先上代码吧: [StructLayout(LayoutKind.Sequential)] public struct MARGINS { public int Left; public int Right; public int Top; public int Bottom; } [DllImport("dwmapi.dll", PreserveSig = fa

随机推荐