WPF:如何為程式添加splashScreen?

來源:互聯網
上載者:User

標籤:hat   ges   play   line   100%   tle   visual   ons   arc   

原文:WPF:如何為程式添加splashScreen?

大家是否還記得在Windows Forms程式中如何?splashScreen嗎?我們一般都會使用Microsoft.VisualBasic.dll中提供的那個WindowsFormsApplicationBase類型,它有一個所謂的splashscreen屬性,可以指定為一個表單的。

那麼,同樣的需求在WPF中如何?呢?這要從兩頭來說,從簡單來說,它實在是簡單了。

事實上,這是.NET Framework 3.5sp1的一個特性

http://blogs.msdn.com/jgoldb/archive/2008/08/12/what-s-new-in-wpf-3-5-sp1-splash-screen-to-improve-perceived-startup-perf.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));

WPF:如何為程式添加splashScreen?

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.