2010-10-12 20 views
11

Dupe: WPF animated splash screenWPF uygulaması için bir açılış ekranı göstermenin bir yolu var mı?

WPF uygulamam için bir açılış ekranı göstermek istiyorum. Yapmak istediğim şey bir dosyadan sözlük yüklerken göstermektir (yüklemek yaklaşık 5-6 saniye sürer). Bunu WPF'de başarmanın bir yolu var mı? Bazı öğreticilere minnettarım, çünkü bu, gönderdiğim diğer sorulardan biraz daha karmaşıktır.

+0

olası yinelenen [WPF animasyonlu ekranı] (http://stackoverflow.com/questions/3677653/wpf-animated-splash-screen) –

cevap

12

ortada listesinin alt tarafı olmalıdır yüklü şablonlar ve Splash Screen listesinden WPF seçin

Ya Solution Explorer üzerinde VS2010 tıklama içinde Add -> New Item yapmak WPF 3.5 SP1: Splash Screen bakınız.

Not: Açılış ekranı yapıcıdan ve ana pencere Window_Loaded geri aramadan önce/sonra kaldırılır. Tüm başlatımımı ana pencere yapıcısına taşıdım ve bir işlem yapıyor ve çok kolay.

+0

Ben ne kadar sıçrama kontrol edemediğini düşünüyorum gösterilecek (olası varsayılan süre 0,5 saniyedir veya böyle bir şey). Neyi başarmak istediğim, bazı verileri yüklerken (5-6 saniye) sıçrama yapmaktır. – sokolovic

+0

açılış ekranı, yapıcıdan ve ana pencere Window_Loaded geri aramadan sonra kaldırılır. Tüm başlatımımı ana pencere yapıcısına taşıdım ve bir işlem yapıyor ve çok kolay. –

+0

Tamam, işe yarıyor. Teşekkürler! :) – sokolovic

7

Kısa yanıt: Ekle -> Yeni Öğe -> Sıçrama Ekranı. Projede bir PNG'yi döker - sadece bunu değiştirin. tam alfa transparenceyi desteklediğini, bu nedenle gölgeleri vb. içerebileceğini unutmayın ...

+0

Bu, bazı senaryolar için yararlı olsa da, SplashScreen ile ilgili temel sorun dinamik içeriği desteklememesidir (görüntü derleme zamanında paketlendiğinden). Açılış ekranınızda veya hatta uygulama sürümünüzde ilerleme çubuğu göstermek istiyorsanız, standart bir WPF penceresi oluşturmalısınız. Pozitif tarafta, bu yöntemle oluşturulan sıçrama ekranları daha hızlı yüklenir, çünkü çerçevenin yüklenmesi gerekmez. – dotNET

+0

@dotNET Evet, her zaman bir takas. Geçmişte, yeni bir pencere tanıtıcısı oluşturdum ve tabloyu doğrudan gerçekleştirdim, bu da yükleme işlemini tamamlamak için winforms/wpf'ye gerek kalmadan bir ilerleme çubuğu uygulayabileceğim anlamına geliyordu. Çok hızlı ve güçlü (alfa, tıklama, vb.), Ancak istediğiniz her denetim için UI işlevselliğini yeniden uygularken ve esneklik/etkin bir şekilde aşırı yükleme yapmak zorunda kaldığınızda oldukça esnek değildi. – Basic

16

SplashScreen, kenarlıksız başka bir Pencere'dir ve yeniden boyutlandırılamaz (ayrıca herhangi bir şekilde etkileşimde bulunamazsınız). Muhtemelen görev çubuğundan gizlemek, ekranda ortalamak, vb. Isteyebilirsiniz. İstediğiniz efekti elde edene kadar çeşitli ayarlarla oynayın.

<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> 

Sonraki, başlangıç ​​penceresini kaldırmak için App.xaml dosyasını değiştirmek ve yerine Başlangıç ​​olay yükseltmek:

İşte

teorisini kanıtlamak için yaklaşık 5 dakika içinde çırpılmış hızlı biri
<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> 

Ve arkadaki kodda, Application_Startup olayını en iyi olduğunu düşündüğünüz şekilde kullanın. Örneğin:

Window1 mainWindow = null; 

private void Application_Startup(object sender, StartupEventArgs e) 
{ 
    MySplashScreen splash = new MySplashScreen(); 
    splash.Show(); 
    mainWindow = new Window1(); 
    mainWindow.Show(); 
    splash.Close(); 
} 
ait
+0

5 yıllık bir cevapla, hiçbir açıklama yapılmadan aşağıya düşürülmek istendi. –

+1

VS içinde yüklü splashcreen şablonu olmayan insanlar için kullanışlıdır – TwinPrimesAreEz

İlgili konular