Avete mai pensato di voler cambiare il processo di chiusura di una form?
Magari riproducendo un effetto in cui le dimensioni della finestra si riducono lentamente in modo analogo al movimento di un'otturatore di una macchina fotografica.
Ho pensato che fosse una cosa divertente e ho scritto alcune righe di codice che fanno esattamente quanto descritto.
Metodo 1: chiusura della form riducendo le dimensioni e mantenendo la forma rettangolare.
Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) _ Handles Me.FormClosing Do Me.Size = New Size(Me.Width - 1, Me.Height - 1) Loop Until Me.Height < 40 End Sub
Metodo 2: chiusura della form rendendo la finestra trasparente.
Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) _ Handles Me.FormClosing Dim diametro As Integer = Me.Width Dim nuovaSagoma As Region Dim formaSagoma As Drawing2D.GraphicsPath Do formaSagoma = New Drawing2D.GraphicsPath() formaSagoma.AddEllipse(0, 0, diametro, diametro) nuovaSagoma = New Region(formaSagoma) Me.Region = nuovaSagoma formaSagoma.Dispose() diametro -= 1 Loop Until diametro < 10 End Sub
In entrambi i metodi viene sfruttato l'evento FormClosing, momento adatto per inserire il codice per la manipolazione delle dimensioni della form stessa, in quanto si attiva nell'istante in cui viene richiesta la chiusura della finestra ma prima che questa si chiuda totalmente.
Con il primo metodo, usando un banale ciclo, si riducono gradualmente le dimensioni della form fino al minimo possibile e poi si chiude il processo.
Con il secondo metodo, non ne riduciamo le dimensioni, bensì aumentiamo la sua superficie trasparente, fino al punto in cui è totalmente invisibile alla vista dell'utente, quindi procediamo con la chiusura.
Ovviamente entrambi i sistemi sono migliorabili e con un pò di fantasia si possono ottenere effetti interessanti.
Buon divertimento!!!