How can I create an animated splash screen like the one in Office 2010 using C#?
I recommend using WPF for modern application design and your splashscreen problem.
Expression Blend is a nice tool for creating animations and xaml designs. But you can also design animations by writing plain xaml as well
Expression Blend Tutorials
Animation Using Expression Blend: How to create an animation
Animation Using Expression Blend: How to start animations on events
MSDN Info
Animation Overview
Using Winforms it will be much mor compicated. The entire GUI is rendered by the CPU (no GPU support) but u can create a custom usercontrol and overwrite the Paint
event and use GDI for drawing, but this will be much more complicated then using wpf.
In WPF it is very easy just right click on project > add new item > splash screen. This
is simple example explaining it.
if you want to make a dynamic animated splash screen like Office 2010 , i recommend you to use WPF and never think about WinForms to make dynamic animation with code !
but if you are determined of using WinForms you have to be tricky , and use one of this tricks :
• put a Flash ActiveX Object , and make your animation with Flash then link them together
• if you are good with WPF and Silverlight you can make your animation with Silverlight and view it in a WebBrowser Control , You may also use Flash or HTML5
Is this question about winforms or wpf?
If it's about wpf:
An animated splash screen is not more than a wpf window showing while your "Main Window" is loading. You can design this splash window with Expression Blend as explained by wischi.
You can also have a look at this code project.
For creating some kind of a loading animation: A Simple WPF Loading Animation
Just create a window with an animation defined in xaml and show it while your application is loading -> animated splash screen.
In Winforms:
You may have to override the paint method of a form to create an animation. But it's still showing another window which contains an animation while another window is loading.
A detailed guide for a splashscreen is here: eExample splashscreen
Another example
Although the basics is:
1) Create a splashscreen, show it, close/dispose it
private void SplashForm()
{
SplashForm newSplashForm = new SplashForm();
newSplashForm.ShowDialog();
newSplashForm.Dispose();
}
2) Run the splashscreen on a seperate thread/backgroundworker
Thread t1 = new Thread(new ThreadStart(SplashForm));
t1.Start();
Thread.Sleep(5000); // 5 seconds
t1.Abort();
Thread.Sleep(1000);
In Winforms, the simplest way is using a PictureBox with an animated Gif on a splashscreen.
This way allows you to spend more time on your animation than your code.