2010-07-31 14 views
7

Tenía la intención de crear un splash screen como el que tiene Visual Studio 2010 para mi aplicación de escritorio (puede usar cualquier versión de C#/VB.NET/CLR).Crear una pantalla de presentación similar a Visual Studio 2010

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

De acuerdo con los blogs de Visual Studio, la pantalla de bienvenida no se ha desarrollado utilizando WPF ya que implicaría el CLR y bibliotecas de WPF para cargar causando un retraso sustancial en la carga de aplicaciones. Por lo tanto, volvieron a la pila C++ y Win32 para hacer eso por razones de rendimiento.

¿Existe una opción factible disponible para que Windows Forms o el desarrollador de WPF aprovechen la misma marca? La idea es tener una marca similar en una pantalla de bienvenida sin perder el rendimiento y el tiempo de inicio.

Usar PNG y efectos de transparencia no ayuda en Windows Forms (un problema conocido, y he leído preguntas relacionadas en este sitio para eso). Solo para enfatizar: es una pantalla de inicio, por lo que el tiempo de inicio no puede verse comprometido.

+0

Ha respondido a su propia pregunta: "Uso de WPF causaría un retraso considerable, mientras que el CLR y Las bibliotecas de WPF cargan ". WinForms requiere las bibliotecas CLR y WinForms, por lo que no puede ser mucho mejor y probablemente sea peor. –

+0

CLR + WinForms es aún más rápido que CLR + WPF y todos conocemos los motivos probables. Me preguntaba si algún truco me daría tanto rendimiento como una marca fuerte sin tener que recurrir a las API de Win32. – Vaibhav

+0

Yo odio pantallas de bienvenida. Haga que su aplicación cargue más rápido. –

Respuesta

4
+0

Muchas gracias por los recursos. Solo una preocupación: entiendo que las API de Win32 son la salida para estos escenarios, pero como primera preferencia, deseaba evitarlos. Sin embargo, seguramente útil. – Vaibhav

+5

evitando = perdiendo la oportunidad de aprender algo nuevo – thelost

+0

Totalmente acepte su definición de "evitar". Estaba en el desarrollo de VB6 antes de .NET y, por lo tanto, he escrito bits de descenso del código API de Win32. Evitar no fue por omitir para aprender la API de Win32 sino para buscar una forma más limpia (administrada, si se quiere) de hacer lo mismo. – Vaibhav

0

Tuve que hacer algo similar con un parche para un massively multiplayer online game (MMO), y nos gustan las pantallas de bienvenida en los juegos. Hice un proceso de carga a medida (en lugar de OnShown o evento de carga que ambas presentan unos inconvenientes en este caso) y puse mi código para la visualización de la imagen bonita allí:

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 cuanto a la imagen, sin duda hay una manera de mostrar archivos PNG utilizando el comportamiento nativo (para la transparencia parcial como en la pantalla de presentación de Visual Studio).

4

Los chicos que escribió lo que realmente hizo un post sobre el mismo, Behind the Scenes: The Splash Screen (2009-11-10) ...

+0

Sí, había leído la publicación y esa es la razón por la que mencioné "Según los blogs de Visual Studio". Gracias por señalar el URI (¡debería haberlo hecho antes)! – Vaibhav

+0

Oh, ha. Debería leer las preguntas más a fondo. Disculpas – Bill