Fade a Form in Visual Basic 2005

This article describes a simple approach to fading out a form.

 Introduction

This article describes a simple approach to fading out a form.  The approach used permits the user to define the number of incremental steps used to fade out the form; the form is faded by decreasing the forms opacity from 100% down to 0% using the number of steps defined and by an equivalent amount in each step.

fader-in-vb.net.gif

Figure 1: Fading Out a Form (Test Application)

Getting Started

The solution contains two Windows Forms (frmMain.vb and frmDirections.vb) and a single class (FadeEffect.vb). The class contains a single public shared method (FadeForm) which accepts a Windows Form and a byte value as arguments. The form argument is the form to fade out of existence and the byte value allows the user to configure the number of incremental decreases in opacity that will be required to fade out the form (0 to 255).  In the examples provided, this value is set to 50 but you can set it to any valid number with larger values creating slower fades and smaller values creating faster fades.

All of the code necessary to fade out a form is contained in the FadeForm class. The two forms call the FadeForm function within their overridden dispose functions such that, whenever either form is disposed of, the fade effect is generated.

solution-explorer-in-vb.net.gif
Figure 2:  Solution Explorer with the Project Visible

Code:  Fade Effect (FadeEffect.vb)

This class provides all of the functionality required to fade out a Windows Form. The code for this class should be easy enough to follow. The class begins with the standard library imports; System.Windows.Forms was added as the FadeForm method accepts a Windows Form in its argument list.

Imports System.Windows.Forms

Public Class FadeEffect

 

The FadeForm function accepts a Windows Form and a byte value as its arguments. The Windows Form identifies the form to be faded; the byte value defines the number of steps though the form will be faded out.  For example, if 25 is passed to the function, the form will be faded out in 25 equal steps.  The amount of opacity decremented in each step is defined by dividing the starting point (100%) by the number of steps.

 

<summary>

Function used to fade out a form using a user defined number of steps

</summary>

<param name="FadeForm"></param>

<param name="NumberOfSteps"></param>

<remarks></remarks>

Public Shared Sub FadeForm(ByVal FadeForm As Form, _ByVal NumberOfSteps As Byte)

Dim StepVal As Double =Convert.ToDouble(100.0F / NumberOfSteps)

Dim dOpacity As Double = 100.0F

Dim b As Byte = 0

For b = 0 To NumberOfSteps

FadeForm.Opacity = dOpacity / 100

FadeForm.Refresh()

Opacity -= StepVal

Next

End Sub

End Class

Code:  Main Form (frmMain.vb)

This form class is used test the Fade Effect; the overridden dispose method has been modified to call the fade effect whenever the form is closed.  Aside from that, the form is used to create an instance of another form (frmDirections.vb) which has also been modified to fade out the form upon disposal.

The code contained in the Dispose call is as follows:

Form overrides dispose to clean up the component list.

<System.Diagnostics.DebuggerNonUserCode()>Protected Overrides Sub Dispose(ByVal disposing AsBoolean)

Call the fade effect on this form

FadeEffect.FadeForm(Me, 50)

        Try

            If disposing AndAlso components IsNot Nothing Then

                components.Dispose()

            End If

        Finally

            MyBase.Dispose(disposing)

        End Try

    End Sub

 

Code:  Directions Form (frmDirections.vb)

This form class is also used test the Fade Effect; the overridden dispose method has been modified to call the fade effect whenever the form is closed.

Form overrides dispose to clean up the component list.
<System.Diagnostics.DebuggerNonUserCode()>
Protected Overrides Sub Dispose(ByVal disposing AsBoolean)
Call the fade effect on this form
FadeEffect.FadeForm(Me, 50)
        Try
            If disposing AndAlso components IsNot Nothing Then
                components.Dispose()
            End If
        Finally
            MyBase.Dispose(disposing)

        End Try

    End Sub


Summary.

This article was intended to demonstrate a simple approach to fading out a form using a variable number of decrements to that forms opacity value.  It serves not other purpose than to possibly jazz up the UI a little bit.