Image Viewer for this mode.
public virtual ImageViewer ImageViewer { get; } @property (nonatomic, strong, readonly, nullable) LTImageViewer *imageViewer; public:virtual property ImageViewer^ ImageViewer{ImageViewer^ get()}
The image viewer for this mode.
This value is useful when deriving your own interactive mode classes. Refer to ImageViewerInteractiveMode for an example.
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 ImageViewerInteractiveModeExample(){// Get the Form's ImageViewer control_imageViewer = _form.ImageViewer;// Use vertical view layout_imageViewer.ViewLayout = new ImageViewerVerticalViewLayout();// Add 4 items to the viewerusing (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 imageusing (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);}}// Create and add the ItemRotate interactive mode to the viewerItemRotateInteractiveMode itemRotate = new ItemRotateInteractiveMode { IsEnabled = true };_imageViewer.InteractiveModes.BeginUpdate();_imageViewer.InteractiveModes.Add(itemRotate);_imageViewer.InteractiveModes.EndUpdate();}public class ItemRotateInteractiveMode : ImageViewerInteractiveMode{public ItemRotateInteractiveMode() : base(){this.AutoItemMode = ImageViewerAutoItemMode.AutoSet;this.IdleCursor = Cursors.VSplit;this.MouseButtons = MouseButtons.Left | MouseButtons.Right;}public override string Name{get { return "ItemRotate"; }}public override int Id{get { return ImageViewerInteractiveMode.UserModeId; }}public override void Start(ImageViewer imageViewer){base.Start(imageViewer);var service = base.InteractiveService;// Rotate events on horizontal dragservice.DragStarted += new EventHandler<InteractiveDragStartedEventArgs>(service_DragStarted);service.DragDelta += new EventHandler<InteractiveDragDeltaEventArgs>(service_DragDelta);service.DragCompleted += new EventHandler<InteractiveDragCompletedEventArgs>(service_DragCompleted);// Reset event on double tapservice.DoubleTap += new EventHandler<InteractiveEventArgs>(service_DoubleTap);}public override void Stop(ImageViewer imageViewer){if (IsStarted){var service = base.InteractiveService;service.DragStarted -= new EventHandler<InteractiveDragStartedEventArgs>(service_DragStarted);service.DragDelta -= new EventHandler<InteractiveDragDeltaEventArgs>(service_DragDelta);service.DragCompleted -= new EventHandler<InteractiveDragCompletedEventArgs>(service_DragCompleted);service.DoubleTap -= new EventHandler<InteractiveEventArgs>(service_DoubleTap);base.Stop(imageViewer);}}private void service_DragStarted(object sender, InteractiveDragStartedEventArgs e){// Make sure pinch is not working, otherwise, ignore panif (!this.CanStartWork(e))return;// Make sure we are on an itemif (this.Item == null)return;Debug.WriteLine("Item Starting Rotation Angle: " + this.Item.RotateAngle);e.IsHandled = true;this.OnWorkStarted(EventArgs.Empty);}private void service_DragDelta(object sender, InteractiveDragDeltaEventArgs e){if (!this.IsWorking)return;var item = this.Item;if (item == null)return;// Find out what to doif (e.Change.X == 0 && e.Change.Y == 0)return;// Rotate clockwise when dragging right and counter-clockwise when dragging leftif(e.Change.X > 0)this.Item.RotateAngle += 2;else if (e.Change.X < 0)this.Item.RotateAngle -= 2;e.IsHandled = true;}private void service_DragCompleted(object sender, InteractiveDragCompletedEventArgs e){if (!this.IsWorking)return;Debug.WriteLine("Item Final Rotation Angle: " + this.Item.RotateAngle);e.IsHandled = true;OnWorkCompleted(EventArgs.Empty);}private void service_DoubleTap(object sender, InteractiveEventArgs e){// Make sure we not working alreadyif (this.IsWorking || !this.CanStartWork(e))return;// Make sure we have an itemvar item = this.Item;if (item == null)return;e.IsHandled = true;this.OnWorkStarted(EventArgs.Empty);ResetPosition(this.ImageViewer, item);this.OnWorkCompleted(EventArgs.Empty);}private void ResetPosition(ImageViewer imageViewer, ImageViewerItem item){// Use the identity matrix to reset the transform of the itemitem.Transform = LeadMatrix.Identity;}}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
