c#制作简单启动画面

声明:代码照搬自SharpDevelop源码。

 

启动画面是程序启动加载组件时一个让用户稍微耐心等待的提示框。一个好的软件在有启动等待需求时必定做一个启动画面。启动画面可以让用户有心理准备来接受程序加载的缓慢,还可以让用户知道加载的进度和内容。本文只是记录最简单的构架。

VS2010创建一个C# Windows窗体应用程序,将主窗体改名为FormMain,再创建一个窗体起名为SplashScreen。向程序中加载一个图片作为启动画面,如下图

 

然后编辑SplashScreen.cs代码

	/// 
	/// 启动画面
	/// 
	public partial class SplashScreen : Form
	{
		/// 
		/// 启动画面本身
		/// 
		static SplashScreen instance;

		/// 
		/// 显示的图片
		/// 
		Bitmap bitmap;

		public static SplashScreen Instance
		{
			get
			{
				return instance;
			}
			set
			{
				instance = value;
			}
		}

		public SplashScreen()
		{
			InitializeComponent();

			// 设置窗体的类型
			const string showInfo = "启动画面:我们正在努力的加载程序,请稍后...";
			FormBorderStyle = FormBorderStyle.None;
			StartPosition = FormStartPosition.CenterScreen;
			ShowInTaskbar = false;
			bitmap = new Bitmap(Properties.Resources.SplashScreen);
			ClientSize = bitmap.Size;

			using (Font font = new Font("Consoles", 10))
			{
				using (Graphics g = Graphics.FromImage(bitmap))
				{
					g.DrawString(showInfo, font, Brushes.White, 130, 100);
				}
			}

			BackgroundImage = bitmap;
		}

		protected override void Dispose(bool disposing)
		{
			if (disposing && (components != null))
			{
				if (bitmap != null)
				{
					bitmap.Dispose();
					bitmap = null;
				}
				components.Dispose();
			}
			base.Dispose(disposing);
		}

		public static void ShowSplashScreen()
		{
			instance = new SplashScreen();
			instance.Show();
		}
	}


然后在主程序启动时调用

	static class Program
	{
		/// 
		/// 应用程序的主入口点。
		/// 
		[STAThread]
		static void Main()
		{
			Application.EnableVisualStyles();
			Application.SetCompatibleTextRenderingDefault(false);
			// 启动
			SplashScreen.ShowSplashScreen();

			// 进行自己的操作:加载组件,加载文件等等
			// 示例代码为休眠一会
			System.Threading.Thread.Sleep(3000);

			// 关闭
			if (SplashScreen.Instance != null)
			{
				SplashScreen.Instance.BeginInvoke(new MethodInvoker(SplashScreen.Instance.Dispose));
				SplashScreen.Instance = null;
			}
			Application.Run(new FormMain());
		}
	}


效果如下图所示:

你可能感兴趣的:(C/C++/C#,Windows)