Gets or sets the image used to display items that have not yet been loaded.
public RasterImage LoadingThumbnail { get; set; }
An Leadtools.RasterImage used to display items that have not yet been loaded.
During the loading operation as a result of calling the LoadThumbnails(String,String,RasterThumbnailBrowserLoadFlags) method, the RasterThumbnailBrowser control will create all the items and assign to them the image stored in the LoadingThumbnail property first before actually loading any thumbnails. This will give a visual feedback to the user of which items have been loaded and which are not.
Initially, the value of the LoadingThumbnail property is initialized with an image loaded from the DLL resource. You can however change the value of this property to your own custom image.
using Leadtools.WinForms;
using Leadtools;
using Leadtools.Codecs;
using Leadtools.Drawing;
class MyForm : Form
{
public RasterThumbnailBrowser theBrowser;
public bool cancelOperation; // Informs us if the user canceled the operation
public Button buttonCancel; // Cancel browse loading
public Button buttonBrowse; // Diplays the browse control
public ProgressBar progressBar; // shows progress of loading browse images
void buttonBrowse_Click(object sender, EventArgs e)
{
// If we are already loading thumbails, cancel
// this operation
if (theBrowser.IsLoadingThumbnails)
theBrowser.CancelLoadingThumbnails();
// Clean all the items
theBrowser.Items.Clear();
// Update the application state
buttonCancel.Enabled = true;
progressBar.Value = 0;
// And load the new thumbnails
cancelOperation = false;
string folderPath = LEAD_VARS.ImagesDir;
theBrowser.LoadStamp = true;
theBrowser.LoadThumbnails(folderPath, "*.*", RasterThumbnailBrowserLoadFlags.Block);
theBrowser.Refresh();
theBrowser.EnableBrowserWatcher = true;
}
private void thumbnailBrowser_LoadThumbnail(object sender, RasterThumbnailBrowserLoadThumbnailEventArgs e)
{
// If this is the first iteration, update the progress bar minimum and maximum values
if (e.Index == 0)
{
progressBar.Minimum = 0;
progressBar.Maximum = e.Total - 1;
}
// Update where we are in the loading operation
progressBar.Value = e.Index;
// Check if we need to cancel (due to the user clicking the Cancel button)
if (cancelOperation)
e.Cancel = true;
}
private void thumbnailBrowser_AddFile(object sender, RasterThumbnailBrowserAddFileEventArgs e)
{
Console.WriteLine("AddFile: {0} Add: {1}", e.FileName, e.Add);
}
private void thumbnailBrowser_FinishedLoadingThumbnails(object sender, EventArgs e)
{
buttonCancel.Enabled = false;
}
private void buttonCancel_Click(object sender, EventArgs e)
{
// The user has clicked the cancel button
this.cancelOperation = true;
}
// Create custom images to use as the "error" and "loading" thumbnails.
void CreateErrorThumbnail()
{
// Get the image size
Size imageSize = theBrowser.ItemImageSize;
// No "loading" thumbnail
theBrowser.LoadingThumbnail = null;
// For the "error" thumbnail, create a red X image
RasterColor[] palette = new RasterColor[0];
RasterImage image = new RasterImage(
RasterMemoryFlags.Conventional,
imageSize.Width,
imageSize.Height,
24,
RasterByteOrder.Bgr,
RasterViewPerspective.TopLeft,
palette,
IntPtr.Zero,
0
);
IntPtr hdc = RasterImagePainter.CreateLeadDC(image);
Graphics g = Graphics.FromHdc(hdc);
g.FillRectangle(Brushes.Magenta, 0, 0, imageSize.Width, imageSize.Height);
g.DrawLine(Pens.Red, 0, 0, imageSize.Width, imageSize.Height);
g.DrawLine(Pens.Red, imageSize.Width, 0, 0, imageSize.Height);
g.Dispose();
RasterImagePainter.DeleteLeadDC(hdc);
// Make this image transparent
image.Transparent = true;
image.TransparentColor = RasterColor.FromKnownColor(RasterKnownColor.Magenta);
theBrowser.ErrorThumbnail = image;
}
public void Cleanup()
{
buttonBrowse.Click -= new EventHandler(buttonBrowse_Click);
buttonCancel.Click -= new EventHandler(buttonCancel_Click);
theBrowser.LoadThumbnail -= new EventHandler<RasterThumbnailBrowserLoadThumbnailEventArgs>(thumbnailBrowser_LoadThumbnail);
theBrowser.FinishedLoadingThumbnails -= new EventHandler(thumbnailBrowser_FinishedLoadingThumbnails);
}
public MyForm()
{
Size = new Size(300, 200);
// create the browser
theBrowser = new RasterThumbnailBrowser();
theBrowser.Codecs = new RasterCodecs();
theBrowser.Dock = DockStyle.Fill;
theBrowser.ItemSpacingSize = new Size(10, 10);
theBrowser.ThumbnailSizeFlags = RasterSizeFlags.Bicubic;
theBrowser.LoadThumbnail += new EventHandler<RasterThumbnailBrowserLoadThumbnailEventArgs>(thumbnailBrowser_LoadThumbnail);
theBrowser.FinishedLoadingThumbnails += new EventHandler(thumbnailBrowser_FinishedLoadingThumbnails);
theBrowser.AddFile += new EventHandler<RasterThumbnailBrowserAddFileEventArgs>(thumbnailBrowser_AddFile);
// Create a thumbnail image to be displayed on error
CreateErrorThumbnail();
// add a panel
Panel panel = new Panel();
panel.Dock = DockStyle.Left;
panel.Width = 100;
Controls.Add(panel);
panel.BringToFront();
// add a "browse" button
buttonBrowse = new Button();
buttonBrowse.Text = "Browse";
buttonBrowse.Dock = DockStyle.Top;
panel.Controls.Add(buttonBrowse);
buttonBrowse.Click += new EventHandler(buttonBrowse_Click);
// add a "cancel" button
buttonCancel = new Button();
buttonCancel.Text = "Cancel";
buttonBrowse.Dock = DockStyle.Bottom;
panel.Controls.Add(buttonCancel);
buttonCancel.Click += new EventHandler(buttonCancel_Click);
// add a progress bar
progressBar = new ProgressBar();
progressBar.Dock = DockStyle.Bottom;
Controls.Add(progressBar);
Controls.Add(theBrowser);
theBrowser.BringToFront();
}
private void InitializeComponent()
{
this.SuspendLayout();
//
// MyForm
//
this.ClientSize = new System.Drawing.Size(315, 273);
this.Name = "MyForm";
this.ResumeLayout(false);
}
}
public void RasterThumbnailBrowser_RasterThumbnailBrowser()
{
MyForm form = new MyForm();
form.ShowDialog();
form.Cleanup();
}
static class LEAD_VARS
{
public const string ImagesDir = @"C:\LEADTOOLS22\Resources\Images";
}