如何在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窗体。 这是迄今为止我见过的最简单也是最好的方法。
这里有一些指导步骤…
- 创build一个无边框的forms(这将是你的启animation面)
- 在应用程序启动时,启动一个计时器(间隔几秒钟)
- 显示你的飞溅forms
- 在Timer.Tick事件,停止计时器和closuresSplashforms – 然后显示您的主要申请表
给一下去,如果你卡住了,然后回来问一些更具体的问题与你的问题
简单和容易的解决scheme来创build启animation面
- 打开新的表单使用名称“SPLASH”
- 无论你想要什么改变背景图像
- select进度条
- 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工作
-
添加这个库
using System.Threading;
-
创buildfunction
public void splash() { Application.Run(new splash()); }
-
在下面的初始化中使用下面的命令。
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(); } }
创造飞溅
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(); } } }