2010-12-06 21 views
6

¿Cómo podemos mostrar la imagen de inicio cuando se inicia mi aplicación ya que cada software funciona como Photoshop, frente a la palabra, etc.? Planeo pegarlo en la forma y luego mostrarlo, pero hay una barra azul superior que viene con controles, etc. cualquier idea/Pantalla Imagen de inicio

+1

No olvide incluir una opción en su programa para apagar la pantalla de inicio, ¡sus usuarios lo adorarán! –

+0

Simplemente no hagas que tu pantalla de presentación sea lo más importante. Odio las aplicaciones que no puedo eliminar porque insisten en que su pantalla de bienvenida permanezca visible hasta que la aplicación finalmente se cargue. – JLWarlow

+1

WPF o WinForms? –

Respuesta

2

Puedes eliminar todas esas barras azules, etc., a través de Form_Load().

Así que si yo fuera usted, me gustaría crear un formulario específico de tamaño, a continuación, establezca lo siguiente en Form_Load() o directamente en el código generado por el diseñador:

this.FormBorderStyle = FormBorderStyle.None; 
this.StartPosition = FormStartPostition.CenterScreen; 

Ahora usted tiene una pantalla de bienvenida al igual que muchas otras aplicaciones, todo lo que tiene que hacer es escribir el código para todo lo que lo hace visible o no, etc. :)

+1

Excelente sugerencia. Desafortunadamente, escribir el código para hacerlo visible y ¡todo es la parte más difícil! –

+0

y el problema es que la pantalla no es transparente, hay un color en la parte posterior que estoy usando gif –

0

¿Está escribiendo una aplicación WinForms o WPF? Deberá establecer diferentes propiedades según el tipo que escriba. Si está escribiendo una aplicación WPF, puede agregar los atributos WindowStyle = "None" y ResizeMode = "NoResize" al elemento Window level-level en XAML. El primero eliminará la barra de título con los botones de minimizar, redimensionar y cerrar, mientras que el segundo eliminará el borde alrededor del formulario.

Ahora, tiene un formulario sin bordes que puede modificar para crear una pantalla de bienvenida si lo desea o simplemente para agregar su imagen de inicio. Si no desea que aparezca su formulario predeterminado, debe agregar los atributos Background = "Transparent" y AllowsTransparency = "True" también. El primero establecerá el color de fondo como transparente, mientras que el segundo permitirá que el programa se vea transparente. Ahora puede agregar cualquier imagen en cualquier forma y el usuario verá solo esa imagen al inicio del programa.

P.S. Asegúrese de cargar otro formulario una vez que se haya mostrado la pantalla de inicio durante un período de tiempo determinado o una vez que los métodos que se supone que "carguen" tengan control de devolución.

¡Cosas bastante simples!

8

Si está buscando la forma más sencilla, puede utilizar el excelente soporte incorporado de .NET Framework para pantallas de presentación. Tendrá que dejar de lado cualquier temor irracional que pueda tener de incluir algo con el nombre "Visual Basic" en una aplicación C#, pero de esta manera le ahorrará tener que rodar su propia solución personalizada y preocuparse por cosas como multi -hecho, invocación y todo eso. Todo se compila hasta la misma IL al final de todos modos. Así es como funciona:

  1. agregar una referencia a Microsoft.VisualBasic a su proyecto.

  2. Agregue un nuevo formulario (llamado algo así como SplashForm) para que sirva como su pantalla de inicio.

  3. Para que se vea más como una pantalla de presentación adecuada, establezca FormBorderStyle property del formulario en "Ninguno" y su StartPosition property en "CenterScreen". Puede agregar cualquier control o imagen a este formulario que desee que se muestre en la pantalla de bienvenida de este formulario.

  4. Agregue el código siguiente a su archivo Project.cs:

    using System; 
    using System.Windows.Forms; 
    using Microsoft.VisualBasic.ApplicationServices; 
    
    namespace WindowsFormsApplication1 
    { 
        static class Program 
        { 
         [STAThread] 
         static void Main(string[] args) 
         { 
         Application.EnableVisualStyles(); 
         Application.SetCompatibleTextRenderingDefault(false); 
         new SplashScreenApp().Run(args); 
         } 
        } 
    
        public class SplashScreenApp : WindowsFormsApplicationBase 
        { 
         protected override void OnCreateSplashScreen() 
         { 
         this.SplashScreen = new SplashForm(); 
         this.SplashScreen.ShowInTaskbar = false; 
         this.SplashScreen.Cursor = Cursors.AppStarting; 
         } 
    
         protected override void OnCreateMainForm() 
         { 
          //Perform any tasks you want before your application starts 
    
          //FOR TESTING PURPOSES ONLY (remove once you've added your code) 
          System.Threading.Thread.Sleep(2000); 
    
          //Set the main form to a new instance of your form 
          //(this will automatically close the splash screen) 
          this.MainForm = new Form1(); 
          } 
         } 
        } 
    

Si usted quiere hacer algo de fantasía, como crear una pantalla transparente al estilo de Adobe Photoshop, puede agregar una imagen PNG de canal alfa al archivo de recursos de su proyecto, y luego agregar el siguiente código a su formulario de pantalla de bienvenida, reemplazando splashImage con la ruta a su recurso de imagen incrustado:

protected override void OnPaintBackground(PaintEventArgs pevent) 
{ 
    Graphics g = pevent.Graphics; 
    g.DrawImage(splashImage, new Rectangle(0, 0, this.Width, this.Height)); 
} 

protected override void OnPaint(PaintEventArgs e) 
{ 
    //Do nothing here 
} 

Para que esto funcione, asegúrese de que usted tiene el doble buffer volvió fuera, o de lo contrario obtendrá un fondo negro a su formulario. En realidad, no hay ninguna razón para duplicar el búfer en una pantalla de presentación.

+0

¿Por qué tendrías que usar Visual Basic para esto? Todo tu código parece C#. – comecme

+2

@comcme: No sugerí usar Visual Basic, el código está escrito en C#. Sin embargo, sugerí agregar una referencia a 'Microsoft.VisualBasic', que tiene las palabras" Visual Basic ". Todas las funciones en ese espacio de nombres son * también * escritas en C#, y como mencioné, todo compila al mismo IL de todos modos. El punto es que la clase 'WindowsFormsApplicationBase' provista en ese espacio de nombres ya te ofrece todo el negocio de la pantalla de bienvenida de forma gratuita, lo que te evita escribir un montón de código adicional. Era solo una broma que los desarrolladores de C# no deberían enloquecer por el nombre. –

+2

+1 ¡Cody, eres el HOMBRE! Esto es perfecto. Por qué MS no agrega soporte en winforms para la clase SplashScreen, no lo sé. Pero esto es perfecto. Te doy mi sombrero –

1

WPF 3.5 y superior en realidad tiene incorporado soporte de pantalla de bienvenida, para una visualización más rápida de la pantalla de presentación y mucho (mucho) menos desprestigio con el código. Ver this page para más detalles.

Cuestiones relacionadas