Hacer desaparecer progresivamente una ventana
Estamos
en una época del año en la que se hace difícil enredar con el visual
studio, pero aún así de vez en cuando se puede descubrir alguna cosilla
nueva. En este caso es un pequeño truquejo para rematar sobre todo esas
aplicaciones que se presentan en las practicas de la universidad o en
cualquier otra que se tiene que entregar a algún cliente.
Se
trata de como hacer que una ventana desaparezca progresivamente
mediante la propiedad de opacidad que poseen las ventanas en windows
forms.
El código es más simple que el mecanismo de un chupete, así que os lo dejo a continuación:
for (double i = this.Opacity*100 ; i > 0; i–)
{
this.Opacity = i/100;
}
Esto lo colocas en el evento FormClosing que se produce al cerrar una ventana y ya esta.
Por hoy es todo, ya se que es poco pero menos es nada.
Actualización:
he estado probando esto en otros ordenadores distintos del mio y con el
valor 100 no funciona como debería, así que podéis probar cambiando 100
por 1000 que es como he conseguido que funcione
Un saludete
17 diciembre, 2006 a las 1:29 pm
Hola csharp!! esta muy bien el efecto, asi se le da un toque diferente a la aplicacion, probandolo he notado que al cerrar la ventana, no se si a ti te pasara, primero se pone la zona de la ventana negra y luego se hace transparente, eso se soluciona cambiando el valor de la propiedad TransparencyKey, se puede poner el color negro y se soluciona.
Pruebalo!!!
17 diciembre, 2006 a las 8:27 pm
La verdad en el mio funciona bien tal cual esta puesto aquí pero en otros ordenadores más rápidos si he comprobado que se produce este mal efecto así que en cuanto pueda lo comprobare 🙂
Saludetes
8 julio, 2007 a las 9:25 am
Estaba web-eando un rato y vi tu tips, no se me habia ocurrido, muy buena la idea… lastima el codigo que solo sirve en tu maquina. Lo que pasa es que el for trabaja a la velocidad maxima que los recursos de la maquina le permitan, lo mismo un while y el do. Asi que es mejor no usarlos cuando se quiere tener un control del tiempo, o usarlos con algun condimento. Ahora te paso el codigo para que sea funcional en cualquier maquina, es una linea mas.
for(int i=1;i<=100;i++) { this.Opacity=-i; //vas disminuyendo la opacidad de a 1 Thread.Sleep(1); //producis una pausa de 1 milisegundo al for } Ahora bien, el codigo asi ta' mas legible pero tambien podria haber usado lo siguiente: for(;this.Opacity>0;this.Opacity–)
Thread.Sleep(1);
En este ultimo caso te ahorras una variable, ya se que hoy en dia 1! variable no es gran cosa contra los GB de ram que podes tener en una maquina. Pero tambien reducis procesamiento… que tampoco es mucho contra los Ghz de los micros de hoy en dia. Pero es buena practica no derrochar a lo tonto.
Un saludo. Espero que mi contribucion te sirva, muy bueno el blog.
20 julio, 2007 a las 11:40 pm
Gracias por el aporte [:D] , además estoy de acuerdo contigo en no ir derrochando ram por mucha que tengamos hoy en dia ya que siempre es poca y en desarrollos grandes se nota.
Saludetes [:)]