如何在Windows窗体应用程序中创build启animation面?

我需要在我的应用程序启动时显示启动屏幕几秒钟。 有谁知道如何实现这个?

将不胜感激的帮助。

首先,将您的启animation面创build为一个无边框,不可移动的图像,并将其设置为初始显示在屏幕的中心,以您想要的方式着色。 所有这一切都可以从devise师那里设定。 具体来说,你要:

  • 将窗体的ControlBox,MaximizeBox,MinimizeBox和ShowIcon属性设置为“False”
  • 将StartPosition属性设置为“CenterScreen”
  • 将FormBorderStyle属性设置为“无”
  • 将窗体的MinimumSize和MaximumSize设置为与其初始大小相同。

然后,你需要决定在哪里显示它,在哪里解雇它。 这两个任务需要在程序的主要启动逻辑的相反侧进行。 这可能在您的应用程序的main()例程中,或者可能在您的主应用程序表单的Load处理程序中; 无论你在哪里创build大型昂贵的物体,从硬盘驱动器读取设置,并且在主应用程序屏幕显示之前,通常需要很长时间才能在幕后做些事情。

然后,你所要做的就是创build一个你的窗体的实例,Show()它,并在你开始初始化的时候保存对它的引用。 一旦你的主窗体已经加载,closures()它。

如果你的启animation面上有一个animation图像,那么这个窗口也需要被“双缓冲”,并且你需要确保所有的初始化逻辑发生在GUI线程之外(这意味着你不能让你的主在mainform的Load处理程序中加载逻辑;您将不得不创build一个BackgroundWorker或其他线程例程。

从Telerik下面的示例使用ShapedForm控件,但将其更改为正常的Windows窗体。 这是迄今为止我见过的最简单也是最好的方法。

http://www.telerik.com/support/kb/winforms/forms-and-dialogs/details/add-splashscreen-to-your-application

这里有一些指导步骤…

  1. 创build一个无边框的forms(这将是你的启animation面)
  2. 在应用程序启动时,启动一个计时器(间隔几秒钟)
  3. 显示你的飞溅forms
  4. 在Timer.Tick事件,停止计时器和closuresSplashforms – 然后显示您的主要申请表

给一下去,如果你卡住了,然后回来问一些更具体的问题与你的问题

简单和容易的解决scheme来创build启animation面

  1. 打开新的表单使用名称“SPLASH”
  2. 无论你想要什么改变背景图像
  3. select进度条
  4. select计时器

现在在计时器中设定计时器:

private void timer1_Tick(object sender, EventArgs e) { progressBar1.Increment(1); if (progressBar1.Value == 100) timer1.Stop(); } 

添加新的表单使用名称“FORM-1”,并使用FORM 1中的以下命令。

注意:在打开Form1之前,Splash Form工作

  1. 添加这个库

     using System.Threading; 
  2. 创buildfunction

     public void splash() { Application.Run(new splash()); } 
  3. 在下面的初始化中使用下面的命令。

     public partial class login : Form { public login() { Thread t = new Thread(new ThreadStart(splash)); t.Start(); Thread.Sleep(15625); InitializeComponent(); enter code here t.Abort(); } } 

http://solutions.musanitech.com/c-create-splash-screen/

创造飞溅

 private void timer1_Tick(object sender, EventArgs e) { counter++; progressBar1.Value = counter *5; // label2.Text = (5*counter).ToString(); if (counter ==20) { timer1.Stop(); this.Close(); } } this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.BackColor = System.Drawing.SystemColors.GradientInactiveCaption; this.ClientSize = new System.Drawing.Size(397, 283); this.ControlBox = false; this.Controls.Add(this.label2); this.Controls.Add(this.progressBar1); this.Controls.Add(this.label1); this.ForeColor = System.Drawing.SystemColors.ControlLightLight; this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None; this.Name = "Splash"; this.ShowIcon = false; this.ShowInTaskbar = false; this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; this.ResumeLayout(false); this.PerformLayout(); 

然后在你的应用程序

 sp = new Splash(); sp.ShowDialog(); 

在CodeProject上有一个相当不错的开机画面 。

它随之而来

  • 淡入
  • 进度条
  • 状态标签
  • 消退
  • 双击closures

作者最近完成并更新了代码。 这真的是一个相当大的工作,是许多不同的开发人员与好主意的合作。

首先,你应该创build一个有或没有边界的表单(无边界是这些东西的首选)

 public class SplashForm : Form { Form _Parent; BackgroundWorker worker; public SplashForm(Form parent) { InitializeComponent(); BackgroundWorker worker = new BackgroundWorker(); this.worker.DoWork += new System.ComponentModel.DoWorkEventHandler(this.worker _DoWork); backgroundWorker1.RunWorkerAsync(); _Parent = parent; } private void worker _DoWork(object sender, DoWorkEventArgs e) { Thread.sleep(500); this.hide(); _Parent.show(); } } 

在主要你应该使用它

  static class Program { [STAThread] static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new SplashForm()); } } 

在这里的其他答案涵盖了这一点,但值得一提的是,在Visual Studio中内置了启animation面的function:如果打开Windows窗体应用程序的项目属性并查看“应用程序”选项卡,则会出现“启animation面:“选项在底部。 您只需在应用程序中select要显示为启animation面的表单,然后在应用程序启动时显示它,并在显示主窗体后隐藏它。

你仍然需要如上所述设置你的表格(有正确的边框,定位,尺寸等)

试试这个代码

 public partial class ssplashscreen : Form { public ssplashscreen() { InitializeComponent(); } private void timer1_Tick(object sender, EventArgs e) { progressBar1.Increment(1); if (progressBar1.Value == 100) { timer1.Stop(); this.Hide(); Form frm = new login(); frm.Show(); } } }