Jedna z novinek uvedených v SP1 pro WPF 3.5 je tzv. splash screen. Jedná se o úvodní či uvítací obrazovku, která se zobrazí ihned po spuštění aplikace a zmízí jakmile je aplikace načtena.
Do WPF byla tato novinka uvedena zejména z důvodu, že si vývojáři stěžovali na délku načítání WPF aplikací při tzv. studeném startu, kdy mezi kliknutím na spouštěcí soubor a samotném nahrání aplikace je dlouhá prodleva a uživatel nemá žádnou zpětnou vazbu, zda se aplikace opravdu spouští. Splash screen má v tomto případě sloužit jako zpětná vazba informující o spouštění aplikace.
Splash screen je dostupný až od verze WPF 3.5 SP1
Studentý vs. teplý start
U .NET aplikací se můžete setkat s pojmy studený a teplý start. Tzv. studený je první start .NET aplikace, kdy je potřeba načíst potřebné .NET knihovny z disku do paměti. Knihovny se načtou při spuštění první .NET aplikace a přetrvávají zde až do restartu nebo hibernace počítače. Teplý start je každý další start .NET aplikace, při kterém jsou už knihovny načtené v paměti. Studený start aplikace je kvůli načítání a inicializaci knihoven podstatně delší.
Splash screen
Jako splash screen můžete použít pouze obrázek. Podporované jsou standardní formáty jako bmp, gif, jpg či png. V případě png můžete použít i průhledný obrázek, naopak animovaný gif podporovaný není.
Snažte se použít co nejmenší obrázek pro splash screen. Otevření několika megabajtového obrázku může trvat déle než spuštění samotné aplikace. Ze stejného důvodu nedoporučuji používat bmp formát, který data nekomprimuje.
Implementace
Splash screen ve WPF můžeme implementovat dvěma způsoby:
1. Build Action
Nejjednodušší je přidání obrázku do projektu a nastavení build action na "splash screen". To zajistí zobrazení obrázku po startu aplikace a automatické zavření, jakmile se aplikace načte.
2. třída SplashScreen
Druhá možnost je použití třídy SplashScreen. Zde můžeme určit, kdy se splash screen zobrazí, případně zmizí.
private void Application_Startup(object sender, StartupEventArgs e)
{
SplashScreen splash = new SplashScreen("/Images/SplashScreen.png");
// true = autoClose
// false = requires to call Close() to close the splash screen
splash.Show(false);
}
Download
WpfSplashScreen.zip - Demo zdrojové kódy
WpfSplashScreen.exe - Demo spustitelný exe