Provides data for the RasterImageList.DrawItem event.
public class RasterImageListDrawItemEventArgs : EventArgs
The RasterImageList.DrawItem event is raised when the RasterImageList.ViewStyle value is set to RasterImageListViewStyle.OwnerDraw. The RasterImageListDrawItemEventArgs provides the data necessary for you to draw the items manually.
using Leadtools.WinForms;using Leadtools;using Leadtools.Codecs;using Leadtools.Drawing;class MyForm3 : Form{RasterImageList imageList;RasterCodecs codecs;public MyForm3(string title){Text = title;// Set the size of the formSize = new Size(400, 200);// Create a new RasterImageList controlimageList = new RasterImageList();imageList.Dock = DockStyle.Fill;imageList.SelectionMode = RasterImageListSelectionMode.Single;imageList.Size = Size;Controls.Add(imageList);imageList.BringToFront();codecs = new RasterCodecs();// Create three itemsstring imagesPath = LEAD_VARS.ImagesDir;for (int i = 0; i < 3; i++){// Load the imageint index = i + 1;string imageFileName = Path.Combine(imagesPath, @"ImageProcessingDemo\Image" + index.ToString() + ".cmp");RasterImage image = codecs.Load(imageFileName, 0, CodecsLoadByteOrder.BgrOrGray, 1, 1);RasterImageListItem item = new RasterImageListItem(image, 1, "Item" + index.ToString());// Select the first itemif (i == 0)item.Selected = true;// Add the item to the image listimageList.Items.Add(item);}// Change the item sizeimageList.ItemSize = new Size(200, 200);// Change the item image sizeimageList.ItemImageSize = new Size(120, 120);// We are going to draw the items ourselvesimageList.ViewStyle = RasterImageListViewStyle.OwnerDraw;// Add a handler to the DrawItem eventimageList.DrawItem += new EventHandler<RasterImageListDrawItemEventArgs>(rasterImageList_DrawItem);// Add the RasterImageList to the control collection.Controls.Add(imageList);}private void rasterImageList_DrawItem(object sender, RasterImageListDrawItemEventArgs e){RasterImageListItem item = e.Item;RasterImageList imageList = item.ImageList;Graphics g = e.Graphics;// get the item rectangleRectangle rc = imageList.GetItemRectangle(item);// sanity checkif (rc.IsEmpty)return;// we want to draw a 1 pixel black rectangle around the item// then we fill the inside of the rectangle with white if the item// is not selected or lightgray if it isg.DrawRectangle(Pens.Black, rc.Left, rc.Top, rc.Width - 1, rc.Height - 1);// we used up 1 pixelrc.Inflate(-1, -1);Brush b;if (item.Selected)b = Brushes.LightGray;elseb = Brushes.White;g.FillRectangle(b, rc);// calculate the rectangles for image and textif (imageList.ShowItemText){// text is visible// draw the text at the bottom of the itemint textHeight = (int)(g.MeasureString("WWW", imageList.Font).Height + 4);Rectangle textRect = Rectangle.FromLTRB(rc.Left,rc.Bottom - textHeight,rc.Right,rc.Bottom);if (!textRect.IsEmpty){StringFormat sf = new StringFormat();sf.Alignment = StringAlignment.Center;sf.LineAlignment = StringAlignment.Center;sf.Trimming = StringTrimming.EllipsisPath;sf.FormatFlags = StringFormatFlags.NoWrap;g.DrawString(item.Text,imageList.Font,Brushes.Black,textRect,sf);sf.Dispose();// we need to update the item rectangle for the space// we used up to draw the textrc.Height -= textRect.Height;}}// rc is the image rectangleif (!rc.IsEmpty){// now rc holds the rectangle to draw the image into// first, set the correct pageint savePage = -1;if (item.Image.Page != item.Page){// the page is different// save current image page so we can set it back when we are donesavePage = item.Image.Page;// disable the image events, we are going to set the page back,// so we do not want anybody subscribing to this image Changed// event to know we changed it.item.Image.DisableEvents();// set new pageitem.Image.Page = item.Page;}try{// we want to center the image into whatever left of rcSize itemImageSize = imageList.ItemImageSize;Rectangle imageRect = new Rectangle(rc.Left + (rc.Width - itemImageSize.Width) / 2,rc.Top + (rc.Height - itemImageSize.Height) / 2,itemImageSize.Width,itemImageSize.Height);// we want to keep the aspect ratioimageRect = RasterImageList.GetFixedAspectRatioImageRectangle(item.Image.ImageWidth,item.Image.ImageHeight,imageRect);// draw the imageLeadRect lRect = new LeadRect(imageRect.Left, imageRect.Top, imageRect.Width, imageRect.Height);RasterImagePainter.Paint(item.Image, e.Graphics, lRect, imageList.PaintProperties);// finally, draw a black rectangle around the imageimageRect.Inflate(1, 1);g.DrawRectangle(Pens.Black,imageRect.Left,imageRect.Top,imageRect.Width - 1,imageRect.Height - 1);}finally{// reset the old pageif (savePage != -1){item.Image.Page = savePage;// re-enable the eventsitem.Image.EnableEvents();}}}}}public void RasterImageList_DrawItem(string title){MyForm3 form = new MyForm3(title);form.ShowDialog();}static class LEAD_VARS{public const string ImagesDir = @"C:\LEADTOOLS22\Resources\Images";}