Есть ли способ показать заставку для приложения WPF?

Dupe: WPF анимированная заставка

Я хотел бы показать заставку для своего приложения WPF. я хочу показать его, пока я загружаю словарь из файла (загрузка занимает около 5-6 секунд). Есть ли способ добиться этого в WPF? Я был бы признателен за некоторые уроки, так как это немного сложнее, чем другие вопросы, которые я написал.

4 ответа

Решение

See WPF 3.5 SP1: Splash Screen

Or within VS2010 click on the Solution Explorer делать Add -> New Item, Выбрать WPF from the list of installed templates and Splash Screen should be on the bottom of the list in the middle.

Note: The splash screen is removed after the constructor and before/when the main window Window_Loaded Перезвоните. I moved all of my initialisation into the main window constructor and it works a treat, and is very easy.

SplashScreen - это на самом деле просто другое окно без рамки, и его размер нельзя изменить (и вы никак не можете с ним взаимодействовать). Возможно, вы захотите скрыть его от панели задач, отцентрировать его на экране и т. Д. Поиграйте с различными настройками, пока не получите желаемый эффект.

Вот быстрый пример, который я набрал за 5 минут, чтобы доказать теорию:

<Window x:Class="MyWhateverApp.MySplashScreen"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        ShowInTaskbar="False" 
        ResizeMode="NoResize" 
        WindowStartupLocation="CenterScreen"
        WindowStyle="None" 
        Background="Transparent" 
        AllowsTransparency="True"
        Title="Sandbox Splash Screen" 
        SizeToContent="Width" 
        Topmost="True" 
        Height="{Binding RelativeSource={RelativeSource Self}, 
                         Path=ActualWidth}">

    <Border CornerRadius="8" Margin="15">
        <Border.Background>
            <ImageBrush ImageSource="Resources\sandtexture.jpeg" 
                        Stretch="Fill" />
        </Border.Background>
        <Border.Effect>
            <DropShadowEffect Color="#894F3B" 
                              BlurRadius="10" 
                              Opacity="0.75" 
                              ShadowDepth="15" />
        </Border.Effect>

        <TextBlock FontSize="40"
                   FontFamily="Bauhaus 93"
                   Foreground="White"
                   Margin="10"
                   VerticalAlignment="Center"
                   HorizontalAlignment="Center"
                   Text="WPF 3.5 Sandbox">
            <TextBlock.Effect>
                <DropShadowEffect Color="Black" />
            </TextBlock.Effect>
        </TextBlock>        
    </Border>
</Window>

Затем измените файл App.xaml, чтобы удалить окно запуска, и вместо этого вызовите событие запуска:

<Application x:Class="MyWhateverApp.App"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             Startup="Application_Startup">
    <Application.Resources>

    </Application.Resources>
</Application>

А в коде, обработайте событие Application_Startup любым удобным для вас способом. Например:

Window1 mainWindow = null;

private void Application_Startup(object sender, StartupEventArgs e)
{
    MySplashScreen splash = new MySplashScreen();
    splash.Show();
    mainWindow = new Window1();
    mainWindow.Show();
    splash.Close();
}

Краткий ответ: Добавить -> Новый элемент -> Заставка. Это сбрасывает PNG в проекте - просто измените это. обратите внимание, что он поддерживает полную альфа-прозрачность, поэтому может содержать тени и т.д...

Поместите изображение .png в каталог приложения и установите действие компиляции свойства как SplashScreen.

Другие вопросы по тегам