原文:http://www.cnblogs.com/chenxizhang/archive/2010/03/25/1694606.html
官網:
https://msdn.microsoft.com/zh-cn/library/system.windows.splashscreen%28v=vs.100%29.aspx
https://msdn.microsoft.com/zh-cn/library/cc656886%28v=vs.100%29.aspx
考慮到大部分的splashscreen其實都只是一個圖片,所以最簡單的做法是,先導入一張圖片,然后設置它的生成操作為“splash screen”
注意,其他什么都不要做,此時運行程序的話,就可以看到效果
注意:雖然我們的圖片是gif的格式,但顯示出來的效果卻是靜態的。
那么,到底發生了什么,讓他具有了這個特性呢?我們可以打開項目的文件,就是那個csproj文件
原來它是通過在項目文件中聲明一個SplashScreen來實現的。
[注意]這個文件是給msbuild這個工具用的。
[思考]所以試想一下,一個應用程序是否可以有多個SplashScreen呢?
同時,我們還可以打開IL代碼來了解一下,
從上面的il代碼可以很直觀地看出來,其實它是先實例化了一個SplashScreen,然后調用了它的Show方法而已。
如果是這樣的話,我們當然也可以自己寫代碼來實現
首先,讓我們將圖片的生成操作修改為“嵌入的資源”
然后通過下面的代碼就可以實現功能
using System;
using System.Collections.Generic; using System.Configuration; using System.Data; using System.Linq; using System.Windows; namespace WpfApplication1 { /// <summary> /// App.xaml 的交互邏輯 /// </summary> public partial class App : Application { protected override void OnStartup(StartupEventArgs e) { SplashScreen s = new SplashScreen("20080320132823923.gif"); s.Show(true); base.OnStartup(e); } } }
值得一提的是,目前看來,也沒有辦法加載一個窗口作為SplashScreen。
如果希望閃屏至少顯示多少時間,則可以考慮下面的代碼
SplashScreen s = new SplashScreen("20080320132823923.gif"); s.Show(false); s.Close(new TimeSpan(0, 0, 10));





