Appunti di Programmazione

Chiusura artistica di una Form

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!!!