Working with Icons in GDI+


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

The Icon class represents a Windows icon, which is a small transparent bitmap. Just like the Bitmap class, this class is inherited from the Image class.

An application can create an Icon object from a stream, string, icon, icon file, or type by using the Icon class constructors with the size of the icon as an optional parameter. The Icon provides four read-only properties-Handle, Height, Size, and Width-which return a window handle to the icon, height, size, and width of an icon, respectively.

Listing 7.21 creates an Icon object from an icon file and sets the icon of a form using the Form class's Icon property.

LISTING 7.21: Creating an icon and setting a form's Icon property

        private void Form1_Paint(object sender, PaintEventArgs e)
        {

            //Create an icon
            Icon curIcon = new Icon("D:/VB.NET Basic Practice Projects/WindowsApplication8/Images/ico-32bit/wi0126-48.ico");

            //Set form's icon
            this.Icon = curIcon;

            //Get icon properties
            float h = curIcon.Height;
            float w = curIcon.Width;
            Size sz = curIcon.Size;
        }

The FromHandle method of the Icon class creates an Icon object from a window handle to an icon (HICON). The Save method saves an Icon object to a stream, and the ToBitmap method converts an Icon object to a Bitmap object. Listing 7.22 creates a Bitmap object from an Icon object using ToBitmap and draws the bitmap using DrawImage.

LISTING 7.22: Creating a bitmap from an icon and displaying it

        private void Form1_Paint(object sender, PaintEventArgs e)
        {

            //Create and icon
            Icon curIcon = new Icon("D:/VB.NET Basic Practice Projects/WindowsApplication8/Images/ico-32bit/wi0126-48.ico");

            //Create a bitmap from an icon
            Bitmap bmp = curIcon.ToBitmap();

            //Draw bitmap
            Graphics g = e.Graphics;
            g.Clear(this.BackColor);
            g.DrawImage(bmp, 10, 10);
            g.Dispose();
        }

Figure 7.35 shows the output from Listing 7.21 and 7.22.

Figure 7.35.jpg

FIGURE 7.35: Viewing icons

Sometimes you will need to convert a Bitmap object into an Icon object.

The following code snipped shows how to do this:

            Icon curIcon;
            curIcon = Icon.FromHandle(bmp.GetHicon());

Conclusion

Hope the article would have helped you in understanding working with Icons in GDI+. Read other articles on GDI+ on the website.

bookGDI.jpg
This book teaches .NET developers how to work with GDI+ as they develop applications that include graphics, or that interact with monitors or printers. It begins by explaining the difference between GDI and GDI+, and covering the basic concepts of graphics programming in Windows.

Up Next
    Ebook Download
    View all
    Learn
    View all