2010-10-12 14 views
11

डुपे: WPF animated splash screenक्या WPF एप्लिकेशन के लिए स्पलैश स्क्रीन दिखाने का कोई तरीका है?

मैं अपने डब्ल्यूपीएफ आवेदन के लिए एक स्पलैश स्क्रीन दिखाना चाहता हूं। जो मैं करना चाहता हूं वह इसे दिखाने के लिए है जब मैं फ़ाइल से शब्दकोश लोड करता हूं (लोड होने में लगभग 5-6 सेकंड लगते हैं)। क्या डब्ल्यूपीएफ में इसे हासिल करने का कोई तरीका है? मैं कुछ ट्यूटोरियल की सराहना करता हूं, क्योंकि यह कुछ और जटिल है, फिर मैंने पोस्ट किए गए अन्य प्रश्न।

+0

संभव डुप्लिकेट [WPF एनिमेटेड स्प्लैश स्क्रीन] (http://stackoverflow.com/questions/3677653/wpf-animated-splash-screen) –

उत्तर

12

WPF 3.5 SP1: Splash Screen

या Solution Explorer पर VS2010 क्लिक भीतर Add -> New Item कर देखें, स्थापित टेम्पलेट्स और Splash Screen की सूची से WPF चयन बीच में सूची में सबसे नीचे पर होना चाहिए।

नोट: स्प्लैश स्क्रीन को कन्स्ट्रक्टर के बाद हटा दिया जाता है और मुख्य विंडो Window_Loaded कॉलबैक से पहले/हटाया जाता है। मैंने अपने सभी प्रारंभिकरण को मुख्य विंडो कन्स्ट्रक्टर में स्थानांतरित कर दिया और यह एक इलाज करता है, और यह बहुत आसान है।

+0

मुझे लगता है कि मैं कब तक छप के लिए नियंत्रित नहीं कर सकते दिखाया जाएगा (संभव डिफ़ॉल्ट समय 0.5 सेकंड है, या ऐसा कुछ)। मैं जो हासिल करना चाहता हूं वह स्पलैश दिखाने के लिए है, जब कुछ डेटा लोड हो रहा है (5-6 सेकेंड)। – sokolovic

+0

कन्स्ट्रक्शन के बाद स्पलैश स्क्रीन हटा दी जाती है और जब मुख्य विंडो विंडो_लोडेड कॉलबैक होती है। मैंने अपने सभी प्रारंभिकरण को मुख्य विंडो कन्स्ट्रक्टर में स्थानांतरित कर दिया और यह एक इलाज करता है, और यह बहुत आसान है। –

+0

ठीक है, यह काम करता है। धन्यवाद! :) – sokolovic

7

संक्षिप्त उत्तर: जोड़ें -> नया आइटम -> स्पलैश स्क्रीन। यह परियोजना में एक पीएनजी डंप करता है - बस इसे संशोधित करें। ध्यान दें कि यह पूर्ण अल्फा पारदर्शिता का समर्थन करता है, इसलिए ड्रॉप-छाया, आदि शामिल हो सकते हैं ...

+0

हालांकि यह कुछ परिदृश्यों के लिए उपयोगी है, स्पलैशस्क्रीन के साथ बड़ी समस्या यह है कि यह गतिशील सामग्री का समर्थन नहीं करता है (क्योंकि छवि संकलन समय पर बंडल की जाती है)। यदि आप अपनी स्प्लैश स्क्रीन, या यहां तक ​​कि एप्लिकेशन संस्करण पर प्रगति पट्टी दिखाना चाहते हैं, तो आपको एक मानक WPF विंडो बनाना होगा। सकारात्मक तरफ, इस विधि के साथ बनाई गई स्पलैश स्क्रीन तेजी से लोड होती है क्योंकि इसे लोड करने के लिए ढांचे की आवश्यकता नहीं होती है। – dotNET

+0

@ डॉटनेट हाँ, यह हमेशा एक व्यापार बंद है। अतीत में, मैंने एक नया विंडो हैंडल बनाया है और सीधे पेंटिंग का प्रदर्शन किया है, जिसका मतलब है कि मैं लोडिंग को समाप्त करने के लिए Winforms/wpf की आवश्यकता के बिना प्रगति पट्टी को कार्यान्वित कर सकता हूं। बहुत तेज़ और शक्तिशाली था (अल्फा, क्लिक-थ्रू इत्यादि) लेकिन काफी लचीला था क्योंकि आप प्रत्येक नियंत्रण के लिए यूआई कार्यक्षमता को फिर से कार्यान्वित कर रहे थे, जिसे आप प्रस्तुत करना चाहते थे, और उसे अमान्यता/ओवरड्रा को कुशलता से संभालना पड़ा। – Basic

16

एक स्पलैशस्क्रीन वास्तव में कोई सीमा वाला कोई और विंडो नहीं है, और यह आकार बदलने योग्य नहीं है (न ही आप किसी भी तरह से इसके साथ बातचीत कर सकते हैं)। आप शायद इसे टास्क बार से छिपाना चाहते हैं, इसे स्क्रीन पर केंद्रित करें, आदि। विभिन्न सेटिंग्स के साथ खेलें जब तक कि आप जो प्रभाव चाहते हैं उसे प्राप्त न करें।

<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 फ़ाइल को संशोधित, और बदले स्टार्टअप घटना बढ़ा:

यहां एक त्वरित एक मैं लगभग 5 मिनट में ऊपर मार पड़ी सिद्धांत को साबित करने के है

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

और कोड-बैक में, एप्लिकेशन_स्टार्टअप ईवेंट को किसी भी तरह से सर्वोत्तम तरीके से संभालें। उदाहरण के लिए:

Window1 mainWindow = null; 

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

कोई स्पष्टीकरण के साथ, 5 वर्षीय उत्तर पर नीचे मतदान करने के लिए अजीब। –

+1

वीएस में स्थापित स्प्लैशस्क्रीन टेम्पलेट के बिना लोगों के लिए उपयोगी – TwinPrimesAreEz

संबंधित मुद्दे