Indicates this mode hit-test state.
public virtual bool HitTestState { get; set; }
public:
virtual property bool HitTestState
{
bool get()
void set(bool value)
}
true if this mode hit-test state is on, otherwise; false.
HitTestState can be used to create an interactive mode that works over an area of interest in the viewer.
Run the example. The cursor changes to a crosshair when it is over the red rectangles.
Start with the ImageViewer example, remove all the code inside the example function (search for the "// TODO: add example code here" comment) and insert the following code:
using Leadtools;
using Leadtools.Controls;
using Leadtools.Codecs;
using Leadtools.Drawing;
using Leadtools.ImageProcessing;
using Leadtools.ImageProcessing.Color;
public ImageViewerForm _form = new ImageViewerForm();
public ImageViewer _imageViewer;
public void ImageViewerInteractiveModeHitTestStateCursorExample()
{
// Get the form's ImageViewer control
_imageViewer = _form.ImageViewer;
// Set the view layout to display vertical items
_imageViewer.ViewLayout = new ImageViewerVerticalViewLayout();
// Add 4 items to the viewer
using (var codecs = new RasterCodecs())
{
for (var page = 1; page <= 4; page++)
{
var item = new ImageViewerItem();
var fileName = Path.Combine(LEAD_VARS.ImagesDir, string.Format("ocr{0}.tif", page));
// Create a thumbnail from the image
using (var image = codecs.Load(fileName, page))
item.Image = image.CreateThumbnail(180, 180, 24, RasterViewPerspective.TopLeft, RasterSizeFlags.Resample);
item.Text = string.Format("Item {0}", page - 1);
_imageViewer.Items.Add(item);
}
}
// Initialize and add the custom HitTestInteractiveMode
HitTestInteractiveMode hitTest = new HitTestInteractiveMode() {
IsEnabled = true
};
_imageViewer.InteractiveModes.BeginUpdate();
_imageViewer.InteractiveModes.Add(hitTest);
_imageViewer.InteractiveModes.EndUpdate();
}
// Custom InteractiveMode that checks if the cursor is over an item and changes the cursor
private class HitTestInteractiveMode : ImageViewerInteractiveMode
{
public HitTestInteractiveMode()
{
// Auto sets the affected Item object
this.AutoItemMode = ImageViewerAutoItemMode.AutoSet;
// Set the Hit Test cursor to be used when the cursor is over the Item
this.HitTestStateCursor = Cursors.Cross;
}
public override string Name
{
get { return "HitTest"; }
}
public override int Id
{
get { return ImageViewerInteractiveMode.UserModeId; }
}
public override void Start(ImageViewer imageViewer)
{
base.Start(imageViewer);
var service = base.InteractiveService;
service.Move += new EventHandler<InteractiveEventArgs>(service_Move);
}
public override void Stop(ImageViewer imageViewer)
{
if (IsStarted)
{
var service = base.InteractiveService;
service.Move -= new EventHandler<InteractiveEventArgs>(service_Move);
base.Stop(imageViewer);
}
}
private void service_Move(object sender, InteractiveEventArgs e)
{
// Set the item
this.UpdateAutoItem(this.ImageViewer, e.Position);
if (this.Item == null)
{
// Cursor is not over an item
this.HitTestState = false;
return;
}
// Cursor is over an item
this.HitTestState = true;
e.IsHandled = true;
}
}
static class LEAD_VARS
{
public const string ImagesDir = @"C:\LEADTOOLS23\Resources\Images";
}
Help Collections
Raster .NET | C API | C++ Class Library | HTML5 JavaScript
Document .NET | C API | C++ Class Library | HTML5 JavaScript
Medical .NET | C API | C++ Class Library | HTML5 JavaScript
Medical Web Viewer .NET
Multimedia
Direct Show .NET | C API | Filters
Media Foundation .NET | C API | Transforms
Supported Platforms
.NET, Java, Android, and iOS/macOS Assemblies
Imaging, Medical, and Document
C API/C++ Class Libraries
Imaging, Medical, and Document
HTML5 JavaScript Libraries
Imaging, Medical, and Document