DekGenius.com
[ Team LiB ] Previous Section Next Section

ImageListmarshal by reference, disposable

System.Windows.Forms (system.windows.forms.dll)sealed class

This System.ComponentModel.Component wraps a Win32 ImageList control. In theory, this is the best way to manage sets of images for the UI; in practice, there are a few complications, because it tends to reflect the fact that it is a thin wrapper over the Win32 common control, rather than a native part of the .NET Framework.

It offers functions to Draw() a specific image from the list onto a System.Drawing.Graphics surface. Unlike the standard GDI+ image classes, support for alpha channel is limited, unless you are using Windows XP and Common Controls v6. You can, however, set a TransparentColor for basic transparency support.

For interop scenarios, you can retrieve the underlying Handle and determine whether the native list has actually been created yet with the HandleCreated property. (The image resources are lazy-allocated the first time they are needed).

The format of the images can be set and retrieved using the ImageSize and ColorDepth properties. The image data itself can be serialized and deserialized using the ImageStream. Typically, you would be deserializing the data from system resources, and this is all handled for you by the design-time environment.

Finally, the actual images in the list can be accessed through the Images property.

The ImageList control is present because several of the Control classes that wrap Win32 objects are a thin veneer over the raw control, and therefore expose the unmanaged image list functionality. If you want to deal with your own sets of images, a managed collection class would probably be the way to go, rather than trying to shoehorn this component into a role for which it is not designed.

public sealed class ImageList : System.ComponentModel.Component {
// Public Constructors
   public ImageList();
   public ImageList(System.ComponentModel.IContainer container);
// Public Instance Properties
   public ColorDepth ColorDepth{set; get; }
   public IntPtr Handle{get; }
   public bool HandleCreated{get; }
   public ImageCollection Images{get; }
   public Size ImageSize{set; get; }
   public ImageListStreamer ImageStream{set; get; }
   public Color TransparentColor{set; get; }
// Public Instance Methods
   public void Draw(System.Drawing.Graphics g, int x, int y, int index);
   public void Draw(System.Drawing.Graphics g, int x, int y, int width, int height, int index);
   public void Draw(System.Drawing.Graphics g, System.Drawing.Point pt, int index);
   public override string ToString();  // overrides System.ComponentModel.Component
// Protected Instance Methods
   protected override void Dispose(bool disposing);  // overrides System.ComponentModel.Component
// Events
   public event EventHandler RecreateHandle;
}

Hierarchy

System.Object System.MarshalByRefObject System.ComponentModel.Component(System.ComponentModel.IComponen, System.IDisposable) ImageList

Returned By

ButtonBase.ImageList, Label.ImageList, ListView.{LargeImageList, SmallImageList, StateImageList}, ListViewItem.ImageList, TabControl.ImageList, ToolBar.ImageList, TreeView.ImageList

Passed To

ButtonBase.ImageList, Label.ImageList, ListView.{LargeImageList, SmallImageList, StateImageList}, TabControl.ImageList, ToolBar.ImageList, TreeView.ImageList

    [ Team LiB ] Previous Section Next Section