2010-07-31 7 views
7

J'avais l'intention de créer un splash screen comme celui arboré par Visual Studio 2010 pour mon application de bureau (n'hésitez pas à utiliser n'importe quelle version de C#/VB.NET/CLR).Créer un écran de démarrage semblable à Visual Studio 2010

Visual Studio 2010 splash screen http://blogs.msdn.com/blogfiles/visualstudio/WindowsLiveWriter/BehindtheScenesSplashScreen_CC39/image_4.png

Selon les blogs Visual Studio, l'écran de démarrage n'a pas été développé en utilisant WPF car cela impliquerait le CLR et les bibliothèques WPF pour charger provoquant un retard important dans le chargement de l'application. Par conséquent, ils sont revenus à la pile C++ et Win32 pour faire de même pour des raisons de performances.

Existe-t-il une option réalisable disponible pour Windows Forms ou WPF développeur pour tirer parti de la même image de marque? L'idée est d'avoir une image de marque similaire dans un écran d'accueil sans perdre en performance et en temps de démarrage. L'utilisation de PNG et d'effets de transparence n'aide pas sur Windows Forms (un problème connu, et j'ai lu des questions connexes sur ce site pour cela). Juste pour souligner: c'est un écran de démarrage, donc le temps de démarrage ne peut pas être compromis.

+0

Vous avez répondu à votre propre question: « En utilisant WPF causerait un retard important alors que le CLR et Les bibliothèques WPF se chargent ". WinForms nécessite les bibliothèques CLR et WinForms, donc ça ne peut pas être beaucoup mieux et c'est probablement pire. –

+0

CLR + WinForms est encore plus rapide que CLR + WPF et nous connaissons tous les raisons probables. Je me demandais juste si une astuce me donnerait à la fois des performances et une image de marque riche sans aller aux API Win32. – Vaibhav

+0

Pour une fois je déteste les écrans de démarrage. Rendez votre application plus rapide. –

Répondre

4
+0

Merci beaucoup pour les ressources. Juste un souci cependant: Je comprends que les API Win32 sont la solution pour ces scénarios, mais comme ma première préférence, souhaitait les éviter. Néanmoins, sûrement utile. – Vaibhav

+5

en évitant = manquer une chance d'apprendre quelque chose de nouveau – thelost

+0

Acceptez complètement votre définition de "éviter". Était dans le développement de VB6 avant .NET et a donc écrit des bits de descente du code API Win32. Éviter n'était pas pour sauter pour apprendre l'API Win32 mais pour essayer de trouver une manière plus propre (gérée, si vous voulez) de faire la même chose. – Vaibhav

0

J'ai dû faire quelque chose de similaire avec un patcher pour un massively multiplayer online game (MMO), et nous aimons les jolis écrans de démarrage dans les jeux. J'ai fait un événement onload personnalisé (au lieu de OnShown ou d'un événement de charge que les deux présentent quelques inconvénients dans ce cas) et de mettre mon code pour l'affichage il y a la jolie image:

protected override void OnLoad(EventArgs args) 
{ 
    base.OnLoad(args); 
    Application.Idle += new EventHandler(OnLoaded); 
} 

private void OnLoaded(object sender, 
         EventArgs args) 
{ 
    Application.Idle -= new EventHandler(OnLoaded); 

    // TODO: Add relevant code here 
} 

En ce qui concerne l'image, est sûrement là une façon d'afficher les fichiers PNG en utilisant le comportement natif (pour une transparence partielle comme dans l'écran de démarrage de Visual Studio).

4

Les gars qui a écrit qu'il a effectivement fait un post sur elle, Behind the Scenes: The Splash Screen (2009-11-10) ...

+0

Oui, j'avais lu le post et c'est la raison pour laquelle j'ai mentionné "Selon les blogs Visual Studio". Merci de pointer l'URI (j'aurais dû le faire plus tôt)! – Vaibhav

+0

Oh ha. Je devrais lire les questions plus en profondeur. Excuses. – Bill