Prevents the control from drawing until the RasterImageList.EndUpdate method is called.
public void BeginUpdate()
The preferred way to add multiple items to a RasterImageList is to use the AddRange method of the RasterImageListItemCollection (accessed through the Items property of the RasterImageList). This enables you to add an array of items to the list in a single operation. Use the BeginUpdate method to prevent the control from repainting the RasterImageList each time an item is added. Once you have completed the task of adding items to the control, call the RasterImageList.EndUpdate method to enable the RasterImageList to repaint. This way of adding items can prevent flickered drawing of the RasterImageList when a large number of items are being added to the control.
using Leadtools.WinForms;using Leadtools;using Leadtools.Codecs;using Leadtools.Drawing;class MyForm2 : Form{RasterImageViewer viewer;RasterImageList imageList;RasterCodecs codecs;public MyForm2(){// Set the size of the formSize = new Size(400, 200);// Create a new RasterImageList controlimageList = new RasterImageList();imageList.Dock = DockStyle.Left;imageList.SelectionMode = RasterImageListSelectionMode.Single;Controls.Add(imageList);imageList.BringToFront();// Add a handler to the SelectedIndexChanged eventimageList.SelectedIndexChanged += new EventHandler(rasterImageList_SelectedIndexChanged);Splitter splitter = new Splitter();splitter.Dock = DockStyle.Left;Controls.Add(splitter);splitter.BringToFront();viewer = new RasterImageViewer();viewer.Dock = DockStyle.Fill;Controls.Add(viewer);viewer.BringToFront();// Now load all our imagescodecs = new RasterCodecs();string folderName = LEAD_VARS.ImagesDir;string[] files = Directory.GetFiles(folderName, "*.*");// This is going to be a lengthy operation// Suspend painting the RasterImageListimageList.BeginUpdate();foreach (string fileName in files){// Load the image as a thumbnailRasterImage image = LoadThumbnail(fileName);// Only add an item if we loaded the image successfulyif (image != null){// Create an itemRasterImageListItem item = new RasterImageListItem();// Setup the item informationitem.Image = image;item.Text = Path.GetFileName(fileName);item.Page = 1;// To load this image in original size lateritem.FileName = fileName;// Add the item into RasterImageListimageList.Items.Add(item);}}imageList.EndUpdate();}private void rasterImageList_SelectedIndexChanged(object sender, EventArgs e){// User has selected an item from the RasterImageList control.// Re-load the item image and show it in original size in the viewer// Get the selected item(s)RasterImageListItemCollection selectedItems = imageList.SelectedItems;if (selectedItems != null && selectedItems.Count == 1){RasterImageListItem item = selectedItems[0];// Load the image in its original size and set it in the viewerviewer.Image = codecs.Load(item.FileName,0,CodecsLoadByteOrder.BgrOrGray,1,1);}}private RasterImage LoadThumbnail(string fileName){RasterImage image = null;try{// See if we can load this imageCodecsImageInfo info = codecs.GetInformation(fileName, false, 1);if (info.Format != RasterImageFormat.Unknown){// Yes, calculate the thumbnail size to fit into RasterImageList.ItemImageSizeRectangle rc = new Rectangle(0,0,imageList.ItemImageSize.Width,imageList.ItemImageSize.Height);rc = RasterImageList.GetFixedAspectRatioImageRectangle(info.Width, info.Height, rc);// Load the thumbnailimage = codecs.Load(fileName,rc.Width,rc.Height,24,RasterSizeFlags.Resample,CodecsLoadByteOrder.BgrOrGray,1,1);}elseimage = null;}catch{image = null;}return image;}}public void RasterImageList_Image(){MyForm2 form = new MyForm2();form.ShowDialog();}static class LEAD_VARS{public const string ImagesDir = @"C:\LEADTOOLS22\Resources\Images";}