Public Sub AddRectanglesOnImageInImageViewer(viewer As Vintasoft.Imaging.UI.ImageViewer)
    Dim random As New System.Random()
    ' create a set of random red rectangles
    Dim redObjects As New Vintasoft.Imaging.UI.VisualTools.ColoredObjects(Of HightlightRectangle)(CreateRandomHightlightRectangles(random, viewer.Image.Width, viewer.Image.Height, 16))
    ' set the brush for red rectangles
    redObjects.Brush = New System.Drawing.SolidBrush(System.Drawing.Color.FromArgb(128, 255, 0, 0))
    ' set the pen for red rectangles
    redObjects.Pen = New System.Drawing.Pen(System.Drawing.Color.FromArgb(64, 0, 0, 0))
    ' create a set of random green rectangles
    Dim greenObjects As New Vintasoft.Imaging.UI.VisualTools.ColoredObjects(Of HightlightRectangle)(CreateRandomHightlightRectangles(random, viewer.Image.Width, viewer.Image.Height, 16))
    ' set the brush for green rectangles
    greenObjects.Brush = New System.Drawing.SolidBrush(System.Drawing.Color.FromArgb(128, 0, 255, 0))
    ' set the pen for green rectangles
    greenObjects.Pen = New System.Drawing.Pen(System.Drawing.Color.FromArgb(64, 0, 0, 0))
    ' create a set of random blue rectangles
    Dim blueObjects As New Vintasoft.Imaging.UI.VisualTools.ColoredObjects(Of HightlightRectangle)(CreateRandomHightlightRectangles(random, viewer.Image.Width, viewer.Image.Height, 16))
    ' set the brush for blue rectangles
    blueObjects.Brush = New System.Drawing.SolidBrush(System.Drawing.Color.FromArgb(128, 0, 0, 255))
    ' set the pen for blue rectangles
    blueObjects.Pen = New System.Drawing.Pen(System.Drawing.Color.FromArgb(64, 0, 0, 0))
    ' create the visual tool for highlighting rectangles on image in image viewer
    Dim highlightTool As New Vintasoft.Imaging.UI.VisualTools.HighlightTool(Of HightlightRectangle)()
    ' add red rectangles to the visual tool
    highlightTool.Items.Add(redObjects)
    ' add green rectangles to the visual tool
    highlightTool.Items.Add(greenObjects)
    ' add blue rectangles to the visual tool
    highlightTool.Items.Add(blueObjects)
    ' set the HighlightTool as the active visual tool in image viewer,
    ' i.e. show the rectangles on image in image viewer
    viewer.VisualTool = highlightTool
End Sub
''' <summary>
''' Creates an array with random rectangles on image.
''' </summary>
Private Function CreateRandomHightlightRectangles(random As System.Random, imageWidth As Integer, imageHeight As Integer, rectCount As Integer) As HightlightRectangle()
    Dim objects As HightlightRectangle() = New HightlightRectangle(rectCount - 1) {}
    For i As Integer = 0 To rectCount - 1
        Dim x As Integer = random.[Next](imageWidth)
        Dim y As Integer = random.[Next](imageHeight)
        Dim width As Integer = random.[Next](System.Math.Min(100, imageWidth - x))
        Dim height As Integer = random.[Next](System.Math.Min(100, imageHeight - y))
        objects(i) = New HightlightRectangle(New System.Drawing.Rectangle(x, y, width, height))
    Next
    Return objects
End Function
''' <summary>
''' A rectangle that must be highlighted on image in image viewer.
''' </summary>
Public Class HightlightRectangle
    Implements Vintasoft.Imaging.IBoundedObject
    Private _rect As System.Drawing.Rectangle
    Public Sub New(rect As System.Drawing.Rectangle)
        _rect = rect
    End Sub
    Public Function GetBoundingBox() As System.Drawing.Rectangle Implements Vintasoft.Imaging.IBoundedObject.GetBoundingBox
        Return _rect
    End Function
End Class