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 bitmap—a
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
}