Drawing Transparent Controls in GDI+

This article has been excerpted from book "Graphics Programming with GDI+"

How can I draw transparent controls? This is one of the commonly asked questions on discussion forums.

Drawing transparent controls involves two steps. First we set a form's style to enable support for transparent controls. We do this by calling the SetStyle method of the form, passing ControlStyles.SupportTransparentBackColor as the first argument, and setting the second argument (which in turn sets the SupportTransparentBackColor bit) to true. Next we set the Control's BackColor property to a transparent color. Either we can use Color.Transparent, or we can create a Color object using an alpha component value less than 255 to provide custom semitransparent.

Listing 15.4 sets the background color of controls to transparent.

LISTING 15.4: Setting the background color of controls to transparent

            /* Code for transparent controls */
            ControlStyles.SupportTransparentBackColor, true);
            button1.BackColor = Color.Transparent;
            btnBrowse.BackColor = Color.Transparent;
            btnClose.BackColor = Color.Transparent;
            panel1.BackColor = Color.FromArgb(70, 0, 0, 255);

The output of Listing 15.4 looks like Figure 15.2


Not all control support transparent color. For example, if you set the BackColor property of text box to Color.Transparent, you will get an exception.

Figure 15.2.jpg

FIGURE 15.2: Designing transparent controls