This class, which is not derived from the Image class (whatever may be implied by parts of the documentation shipped with VS.NET 2002!), represents a small, transparent bitmapa Win32 icon, in fact. As such, it intrinsically supports a variety of different resolutions and bit-depths. As with Bitmap , this is a resource-based class, and therefore you should carefully manage its lifetime, calling Dispose() when it is no longer needed, to avoid leaking system resources. You can construct an Icon from a file, or from another Icon optionally looking for the image that best matches a particular resolution. The FromHandle() static method, and the Handle property allow you translate to and from native icon handles in interop scenarios. (Note that you must not delete the handle retrieved from this property as it is the original, not a copy) Finally, you can translate the Icon to a Bitmap with the ToBitmap() method. Note that you have very little control over the particular image, resolution, and bit-depth that is ultimately rendered by the Graphics.DrawIcon() method. If you need that degree of control, then a Bitmap and its Bitmap.MakeTransparent() method might be a better choice. The icon is something of a hang-over from the days when bitmaps didn't have alpha channels. public sealed class Icon : MarshalByRefObject : System.Runtime.Serialization.ISerializable, ICloneable, IDisposable { // Public Constructors public Icon (Icon original , int width , int height ); public Icon (Icon original , Size size ); public Icon (System.IO.Stream stream ); public Icon (System.IO.Stream stream , int width , int height ); public Icon (string fileName ); public Icon (Type type , string resource ); // Public Instance Properties public IntPtr Handle {get; } public int Height {get; } public Size Size {get; } public int Width {get; } // Public Static Methods public static Icon FromHandle (IntPtr handle ); // Public Instance Methods public object Clone (); // implements ICloneable public void Dispose (); // implements IDisposable public void Save (System.IO.Stream outputStream ); public Bitmap ToBitmap (); public override string ToString (); // overrides object // Protected Instance Methods protected override void Finalize (); // overrides object } HierarchySystem.Object System.MarshalByRefObject Icon(System.Runtime.Serialization.ISerializabl, System.ICloneable , System.IDisposable) Returned ByMultiple types Passed ToGraphics.{DrawIcon() , DrawIconUnstretched()} , System.Windows.Forms.Design.ComponentEditorPage.Icon , System.Windows.Forms.ErrorProvider.Icon , System.Windows.Forms.Form.Icon , System.Windows.Forms.ImageCollection.Add() , System.Windows.Forms.NotifyIcon.Icon , System.Windows.Forms.PrintPreviewDialog.Icon , System.Windows.Forms.StatusBarPanel.Icon |