Private Class MyForm2 : Inherits Form
Public theBrowser As RasterThumbnailBrowser
Public cancelOperation As Boolean ' Informs us if the user canceled the operation
Public buttonCancel As Button ' Cancel browse loading
Public buttonBrowse As Button ' Diplays the browse control
Public progressBar As ProgressBar ' shows progress of loading browse images
Private Sub buttonBrowse_Click(ByVal sender As Object, ByVal e As EventArgs)
' If we are already loading thumbails, cancel
' this operation
If theBrowser.IsLoadingThumbnails Then
theBrowser.CancelLoadingThumbnails()
End If
' Clean all the items
theBrowser.Items.Clear()
' Update the application state
buttonCancel.Enabled = True
progressBar.Value = 0
' And load the new thumbnails
cancelOperation = False
Dim folderPath As String = LEAD_VARS.ImagesDir
Dim files As String() = New String(1) {Path.Combine(folderPath, "\image1.jpx"), folderPath}
theBrowser.LoadThumbnails(files, "*.jpg", RasterThumbnailBrowserLoadFlags.Block Or RasterThumbnailBrowserLoadFlags.ExpandMultiPageFile)
End Sub
Private Sub thumbnailBrowser_LoadThumbnail(ByVal sender As Object, ByVal e As RasterThumbnailBrowserLoadThumbnailEventArgs)
' If this is the first iteration, update the progress bar minimum and maximum values
If e.Index = 0 Then
progressBar.Minimum = 0
progressBar.Maximum = e.Total - 1
End If
' 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 Then
e.Cancel = True
End If
End Sub
Private Sub thumbnailBrowser_AddFile(ByVal sender As Object, ByVal e As RasterThumbnailBrowserAddFileEventArgs)
Console.WriteLine("AddFile: {0} Add: {1} Total Pages: {2} Page:{3}", e.FileName, e.Add, e.TotalPages, e.Page)
End Sub
Private Sub thumbnailBrowser_FinishedLoadingThumbnails(ByVal sender As Object, ByVal e As EventArgs)
buttonCancel.Enabled = False
End Sub
Private Sub buttonCancel_Click(ByVal sender As Object, ByVal e As EventArgs)
' The user has clicked the cancel button
Me.cancelOperation = True
End Sub
' Create custom images to use as the "error" and "loading" thumbnails.
Private Sub CreateErrorThumbnail()
' Get the image size
Dim imageSize As Size = theBrowser.ItemImageSize
' No "loading" thumbnail
theBrowser.LoadingThumbnail = Nothing
' For the "error" thumbnail, create a red X image
Dim palette As RasterColor() = New RasterColor() {}
Dim image As RasterImage = New RasterImage(RasterMemoryFlags.Conventional, imageSize.Width, imageSize.Height, 24, RasterByteOrder.Bgr, _
RasterViewPerspective.TopLeft, palette, IntPtr.Zero, 0)
Dim hdc As IntPtr = RasterImagePainter.CreateLeadDC(image)
Dim g As Graphics = 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
End Sub
Public Sub Cleanup()
RemoveHandler buttonBrowse.Click, AddressOf buttonBrowse_Click
RemoveHandler buttonCancel.Click, AddressOf buttonCancel_Click
RemoveHandler theBrowser.LoadThumbnail, AddressOf thumbnailBrowser_LoadThumbnail
RemoveHandler theBrowser.FinishedLoadingThumbnails, AddressOf thumbnailBrowser_FinishedLoadingThumbnails
End Sub
Public Sub New()
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
AddHandler theBrowser.LoadThumbnail, AddressOf thumbnailBrowser_LoadThumbnail
AddHandler theBrowser.FinishedLoadingThumbnails, AddressOf thumbnailBrowser_FinishedLoadingThumbnails
AddHandler theBrowser.AddFile, AddressOf thumbnailBrowser_AddFile
' Create a thumbnail image to be displayed on error
CreateErrorThumbnail()
' add a panel
Dim panel As 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)
AddHandler buttonBrowse.Click, AddressOf buttonBrowse_Click
' add a "cancel" button
buttonCancel = New Button()
buttonCancel.Text = "Cancel"
buttonBrowse.Dock = DockStyle.Bottom
panel.Controls.Add(buttonCancel)
AddHandler buttonCancel.Click, AddressOf buttonCancel_Click
' add a progress bar
progressBar = New ProgressBar()
progressBar.Dock = DockStyle.Bottom
Controls.Add(progressBar)
Controls.Add(theBrowser)
theBrowser.BringToFront()
End Sub
Private Sub InitializeComponent()
Me.SuspendLayout()
'
' MyForm
'
Me.ClientSize = New System.Drawing.Size(315, 273)
Me.Name = "MyForm"
Me.ResumeLayout(False)
End Sub
End Class
Public Sub RasterThumbnailBrowser_RasterThumbnailBrowser()
Dim form As MyForm = New MyForm()
form.ShowDialog()
form.Cleanup()
End Sub
Public NotInheritable Class LEAD_VARS
Public Const ImagesDir As String = "C:\Users\Public\Documents\LEADTOOLS Images"
End Class
class MyForm2 : 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;
string[] files = new string[2] { Path.Combine(folderPath , "\\image1.jpx"), folderPath };
theBrowser.LoadThumbnails(files, "*.jpg", RasterThumbnailBrowserLoadFlags.Block | RasterThumbnailBrowserLoadFlags.ExpandMultiPageFile);
}
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} Total Pages : {2} Page : {3}", e.FileName, e.Add, e.TotalPages, e.Page);
}
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 MyForm2()
{
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_LoadThumbnails2()
{
MyForm form = new MyForm();
form.ShowDialog();
form.Cleanup();
}
static class LEAD_VARS
{
public const string ImagesDir = @"C:\Users\Public\Documents\LEADTOOLS Images";
}