2011-09-16 14 views
9

Tengo un Panel como contenedor Este panel tiene una imagen como fondo, dentro del panel de contenedores, tengo otro panel donde voy a poner algo de información etiquetas, esa información cambiará a tiempo, lo que quiero es una transición cuando una nueva información está a punto de mostrarse, atenuar el panel de información con la información anterior y luego fundir en el mismo panel con la nueva información. En el momento del fade out del panel de información, podré ver la imagen de fondo del panel del contenedor. Ambos paneles tienen BorderStyle = FixedSingle, también el panel de información tiene un color de fondo.Cómo hacer fundido de entrada/salida de un panel con contenido usando C#

Ahora mi pregunta es: ¿hay alguna forma de desvanecerse dentro o fuera del panel de información y todo el contenido dentro de también?

Estaba buscando en la web, y encontré un enfoque para este efecto trabajando con el color de fondo del panel, pero no funciona del todo, y además, el contenido sigue ahí, ya que solo intentan atenuar la propiedad de retroiluminación :

Timer tm = new Timer(); 
    private void Form1_Shown(object sender, EventArgs e) 
    { 
     tm.Interval = 100; 
     tm.Tick += new EventHandler(timer1_Tick); 
     tm.Enabled = true; 
    } 

    private void timer1_Tick(object sender, EventArgs e) 
    { 
     int aa = 0; 
     panel2.BackColor = Color.FromArgb(aa, 255, 0, 0); 

     aa += 10; 
     if (aa > 255) 
      tm.Enabled = false; 
    } 

Cualquier ayuda será apreciada.

+0

No sé mucho acerca de WPF, pero si que es una opción para usted, podría ser una mejor opción para lograr el efecto que estás buscando. http://en.wikipedia.org/wiki/Windows_Presentation_Foundation –

+0

Sí, en WPF solo crea una animación que cambia la opacidad del panel a lo largo del tiempo. –

+1

El problema al que se enfrentarán es que Opacity solo está disponible en el nivel de formulario, no en el nivel de control. Tal vez un truco inteligente donde creas una imagen idéntica en un formulario que se superpone a tu panel y una vez que la opacidad está al 100%, ocultas el formulario. Winforms no es bueno en esto. – LarsTech

Respuesta

3

No creo que pueda establecer la opacidad de los controles individuales. La forma en sí tiene una opacidad, pero no creo que quieras desvanecer todo el control.

Puede crear controles personalizados que apoyan la opacidad ... He aquí un ejemplo: http://www.slimee.com/2009/02/net-transparent-forms-and-controls-with.html

Creo que esta aplicación se aplicaría a los controles secundarios dentro del panel (porque se está trabajando en el área rectangular que la toma de control arriba). Si me equivoco, tendría que manejar todos los controles secundarios como parte de su comportamiento desbordado.

Como han dicho otros, lograr que esto se vea "suave" podría ser mucho trabajo. Con suerte, alguien tendrá una mejor respuesta.

+0

Agradezco su respuesta, estoy de acuerdo con usted, la intención de esta aplicación es tener un tablero en un gran televisor donde se mostrará algo de información a tiempo, es por eso que necesito usar algunos efectos visuales para dar el espectadores una experiencia agradable. Quizás necesito encontrar otra herramienta para hacer esto. – Somebody

2

Como se sugiere en otras respuestas, no se puede (sin sus propios controles) fundir/desvanecer un panel.

Puede desvanecerse el formulario al iniciarse o tener un formulario de diálogo modal que se desvanece hacia dentro o hacia fuera.

Fundir

private void FadeIn_Tick(object sender, EventArgs e) 
    { 
     this.Opacity += .08; 
     if (this.Opacity >= 1) 
     { 
      FadeIn.Stop(); 
     } 
    } 

Fade Out

private void FadeOut_Tick(object sender, EventArgs e) 
    { 
     this.Opacity -= .08; //Decrease opacity 
     if (this.Opacity <= 0) //While it is not 0 
     { 
      FadeOut.Stop(); //Stop! 
      this.Close(); //Close the form 
     } 
    } 
+0

gracias por responder MisdartedPenguin, pero su solución se aplica solo a los formularios (como usted dijo). – Somebody

+0

Esto no es una solución para esta pregunta. Ni siquiera cerca –

Cuestiones relacionadas