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
Your email has been sent to support! Someone should be in touch! If your matter is urgent please come back into chat.
Chat Hours:
Monday - Friday, 8:30am to 6pm ET
Thank you for your feedback!
Please fill out the form again to start a new chat.
All agents are currently offline.
Chat Hours:
Monday - Friday
8:30AM - 6PM EST
To contact us please fill out this form and we will contact you via email.