複製代碼: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