Экран заставки

85

Какими бы быстрыми ни были приложения WPF, они не стартуют мгновенно. При первом запуске приложения происходит задержка, пока общеязыковая исполняющая среда (CLR) инициализирует .NET и затем запускает приложение.

Эта задержка не обязательно является проблемой. Обычно проходит небольшое время и первое окно появляется. Однако если приходится выполнять шаги инициализации, требующие большего времени, или необходимо добиться более профессионального открытия и отображения графики, можно воспользоваться простым средством экрана заставки (splash screen), доступным в WPF.

Ниже перечислены шаги по добавлению экрана заставки:

Теперь при следующем запуске приложения это изображение будет показано немедленно, в центре экрана. Как только исполняющая среда будет готова, после завершения метода Application.Startup появится первое окно приложения, а экран заставки постепенно исчезнет (примерно за 300 миллисекунд).

Это очень простое средство. Но имейте в виду, что экран заставки отображается без каких-либо украшений. Вокруг него не рисуется рамка, так что если она нужна, то следует поместить ее в само изображение. Не предусмотрена также возможность показа последовательности изображений либо анимации. Если же это необходимо, то должен применяться традиционный подход: создание стартового окна, которое выполняет код инициализации одновременно с отображением нужного графического содержимого.

При добавлении экрана заставки компилятор WPF добавляет в автоматически сгенерированный файл App.g.i.cs код вроде следующего:

[System.STAThreadAttribute()]
        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
        public static void Main() {
            SplashScreen splashScreen = new SplashScreen("grimace.png");
            splashScreen.Show(true);
            WpfApplication1.App app = new WpfApplication1.App();
            app.InitializeComponent();
            app.Run();
        }

Этот код можно написать и самостоятельно, не пользуясь действием сборки SplashScreen. Единственной деталью, которую можно изменить, является скорость исчезновения экрана заставки. Для этого методу SpashScreen.Show() понадобится передать значение false (чтобы экран заставки не исчезал автоматически). Экран заставки затем можно закрыть за нужное время, вызвав метод SplashScreen.Close() и передав ему значение TimeSpan, указывающее длительность процесса угасания.

Пройди тесты
Лучший чат для C# программистов