ImplodeForm - Hiding a form with an implosion effect
' Hiding a form with an implosion effect.
' the numSteps parameter is the number of steps to decrease the form size from
' the current size to 0
' the stepDuration argument is the number of milliseconds between each step
' Example:
' Private Sub Form1_Closing(...) Handles MyBase.Closing
' ImplodeForm(Me)
' End Sub
Sub ImplodeForm(ByVal frm As Form, Optional ByVal numSteps As Integer = 25, _
Optional ByVal stepDuration As Integer = 10)
' do nothing if the form is minimized or maximized
If frm.WindowState <> FormWindowState.Normal Then Exit Sub
Dim origLeft As Integer = frm.Left
Dim origTop As Integer = frm.Top
Dim currHeight As Integer = frm.Height
Dim currWidth As Integer = frm.Width
Dim stepHeight = currHeight / numSteps
Dim stepWidth = currWidth / numSteps
Dim i As Integer
For i = 1 To numSteps
'calc the new height/width
currHeight -= stepHeight
currWidth -= stepWidth
' display the form
frm.SetBounds(origLeft, origTop, currWidth, currHeight)
' pause if so is requested
System.Threading.Thread.CurrentThread.Sleep(stepDuration)
Next
End Sub