Click here to Skip to main content
Licence CPOL
First Posted 8 Jun 2008
Views 10,986
Downloads 193
Bookmarked 18 times

Splash Screens - The Easy Way

By | 31 Dec 2008 | Article
Create splash screens with just a small bit of programming experience.

Introduction

I was reading some articles on creating splash screens, and they all either required long codes, or had to load the application before the splash screen appeared. Therefore, I made my own method of creating a splash screen. Since I'm only a high school student, I lack programming experience, and this article should be easy to follow through. This is also my first article, so some parts might not be as good :).

Using the code

First, create a new solution with a Windows form. Add another form to the project called "Splash Screen.cs". Now, go to Program.cs (or where the main entry point is) and add:

// Change the starting form from 
Application.Run(new Form1());
 
// To
Application.Run(new Splash_Screen());

Go to Splash Screen.cs in the Designer, set the FormBorderStyle to None, Topmost to true, StartPosition to CenterScreen, and ShowInTaskBar to false. Now, add a PictureBox. Set the SizeMode to StretchImage, and the Image to the screen you want. Set Dock to Fill, and resize the form at will.

Next, add the components to the splash screen. Add a FileSystemWatcher and two Timers. Name one timer_run and the other timer. For the watcher, add a Deleted event, and add Tick events for both timers. At the same time, add a Load event for the Form.

Switch to the code. After the call to InitializeComponent(), add:

watcher.Path = Application.StartupPath;

Under the Load event, add:

try
{
    // Create a .tmp file so it can be deleted when Form1 is done
    if (!System.IO.File.Exists(Application.StartupPath + "\\status.tmp"))
    {
        using (System.IO.StreamWriter sw = System.IO.File.CreateText(
               Application.StartupPath + "\\status.tmp"))
        {
        }
    }
}
catch
{
    // Hide this in case something goes wrong
    this.Hide();
}
// Run Form1 on a seperate thread
timer_run.Enabled = true;

This will create a file which the watcher will keep track of. In case something goes wrong, it will hide the splash screen. At the end, it enables timer_run to start the form.

Under timer_run_Tick, add the following code:

timer_run.Enabled = false;
Form1 form1 = new Form1();
form1.Show();

This will run Form1.

Under watcher_Deleted, add:

timer.Enabled = true;

This will close the form when Form1 has loaded.

Create a global variable called transparency:

private double transparency = 1;

Under timer_Tick, add:

// Go down on opacity
if (transparency > 0)
{
      this.Opacity = transparency;
      transparency -= 0.01;
}
else
{
      timer.Enabled = false;
      this.Hide();
      this.dispose(false);
}

This will make the splash screen fade away when loaded.

Switch to Form1 code view. Before InitializeComponent(), add some redundant code to slow it down and allow time for the splash screen.

// Add some redundant code
int number = 0;
for (int i = 0; i < 2147483647; i++)
{
    number++;
}

Under Form1_Load, add:

// Delete the file to raise event on splash screen
if (System.IO.File.Exists(Application.StartupPath + "\\status.tmp"))
{
    System.IO.File.Delete(Application.StartupPath + "\\status.tmp");
}

This will delete the file and raise the event on the splash screen.

Finally, under Form_Closed, add:

Application.Exit();

Since this.Hide() was used earlier, Application.Exit() is needed, or else the splash screen will still be running.

That's it! Easy. isn't it :P?

History

  • June 8, 2008: First release.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

About the Author

That Asian Guy



Canada Canada

Member



Sign Up to vote   Poor Excellent
Add a reason or comment to your vote: x
Votes of 3 or less require a comment

Comments and Discussions

 
You must Sign In to use this message board. (secure sign-in)
 
Search this forum  
 FAQ
    Noise  Layout  Per page   
  Refresh
GeneralMy vote of 5 PinmemberGmust1:24 19 Jul '10  
GeneralGood attempt but.. PinmemberN a v a n e e t h16:12 8 Jun '08  
GeneralRe: Good attempt but.. PinmemberThat Asian Guy18:12 8 Jun '08  

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

Permalink | Advertise | Privacy | Mobile
Web01 | 2.5.120517.1 | Last Updated 31 Dec 2008
Article Copyright 2008 by That Asian Guy
Everything else Copyright © CodeProject, 1999-2012
Terms of Use
Layout: fixed | fluid