复制代码:WPF animated splash screen有没有办法显示WPF应用程序的启动画面?
我想为我的WPF应用程序显示启动画面。 我想要做的是显示它,而我从文件加载字典(大约需要5-6秒加载)。有没有办法在WPF中实现这一点?我会很感激一些教程,因为这比我发布的其他问题稍微复杂一些。
复制代码:WPF animated splash screen有没有办法显示WPF应用程序的启动画面?
我想为我的WPF应用程序显示启动画面。 我想要做的是显示它,而我从文件加载字典(大约需要5-6秒加载)。有没有办法在WPF中实现这一点?我会很感激一些教程,因为这比我发布的其他问题稍微复杂一些。
或者在Solution Explorer
VS2010点击内完成Add -> New Item
,从已安装的模板和Splash Screen
列表中选择WPF
应该放在中间的列表的底部。
注意:启动画面在构造函数和主窗口Window_Loaded
回调之前/之后被移除。我将所有的初始化都移到了主窗口构造函数中,并且它很有用,而且非常简单。
简答题:添加 - >新建项目 - >启动画面。它在项目中转储了一个PNG - 只需修改它即可。请注意,它支持完整的alpha透明度,所以可以包含阴影等等。
虽然这对于某些场景很有用,但SplashScreen的主要问题是它不支持动态内容(因为图像在编译时捆绑在一起)。如果您想在启动画面或应用程序版本上显示进度条,则必须创建一个标准的WPF窗口。从积极的方面来看,使用此方法创建的启动画面加载速度更快,因为它不需要加载框架。 – dotNET 2017-06-11 14:05:07
@dotNET是的,它总是一个权衡。在过去,我创建了一个新的窗口句柄并直接执行绘画,这意味着我可以实现一个进度条而无需winforms/wpf来完成加载。非常快速且功能强大(可以是alpha,点击等),但却非常不灵活,因为您要为要渲染的每个控件重新实现UI功能,并且必须高效地处理失效/透支。 – Basic 2017-06-11 18:53:42
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();
}
的
奇怪的是,在一个5岁的答案中被拒绝投票,没有任何解释。 – 2015-09-09 13:30:21
对于没有在VS中安装splashscreen模板的人有用 – TwinPrimesAreEz 2015-11-30 15:27:29
可能重复[WPF动画闪屏(http://stackoverflow.com/questions/3677653/wpf-animated-splash-screen) – 2010-10-12 11:44:06