Есть ли способ показать заставку для приложения WPF?
Dupe: Анимированный заставку WPF
Я хотел бы показать заставку для моего приложения WPF.
то, что я хочу сделать, это показать его, пока я загружаю словарь из файла (загрузка занимает около 5-6 секунд). Есть ли способ достичь этого в WPF? Я был бы признателен за некоторый учебник, так как это немного сложнее, чем другие вопросы, которые я опубликовал.
Ответы
Ответ 1
См. WPF 3.5 SP1: Заставка
Или в VS2010 нажмите Solution Explorer
do Add -> New Item
, выберите WPF
из списка установленных шаблонов, а Splash Screen
должен быть в нижней части списка посередине.
Примечание. Экран заставки удаляется после конструктора и перед/после обратного вызова главного окна Window_Loaded
. Я переместил всю свою инициализацию в конструктор главного окна, и это работает, и это очень легко.
Ответ 2
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, чтобы удалить окно запуска, и вместо этого запустите событие Startup:
<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();
}
Ответ 3
Краткий ответ: Добавить → Новый элемент → Заставка. Он сбрасывает PNG в проекте - просто измените это. обратите внимание, что он поддерживает полную альфа-прозрачность, поэтому может содержать тени и т.д.