←Select platform

Start Method

Summary

Starts the mode.

Syntax
C#
Objective-C
C++/CLI
public virtual void Start( 
   ImageViewer imageViewer 
) 
- (void)start:(LTImageViewer *)viewer; 
public:  
   virtual void Start( 
      ImageViewer^ imageViewer 
   ) 

Parameters

imageViewer

The image viewer to associate with this mode.

Remarks

This method must be overridden in your derived class when implementing your own interactive modes. For an example. Refer to ImageViewerInteractiveMode.

The ImageViewer will call Start when the user sets this mode in the viewer and enables it. Typically, the mode should subscribe to the required events in InteractiveService and wait for user interaction. You should unsubscribe to these events when Stop is called.

Example
C#
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 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); 
      } 
   } 
 
   // Create and add the ItemRotate interactive mode to the viewer 
   ItemRotateInteractiveMode 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 drag 
      service.DragStarted += new EventHandler<InteractiveDragStartedEventArgs>(service_DragStarted); 
      service.DragDelta += new EventHandler<InteractiveDragDeltaEventArgs>(service_DragDelta); 
      service.DragCompleted += new EventHandler<InteractiveDragCompletedEventArgs>(service_DragCompleted); 
 
      // Reset event on double tap 
      service.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 pan 
      if (!this.CanStartWork(e)) 
         return; 
 
      // Make sure we are on an item 
      if (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 do 
      if (e.Change.X == 0 && e.Change.Y == 0) 
         return; 
 
      // Rotate clockwise when dragging right and counter-clockwise when dragging left 
      if(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 already 
      if (this.IsWorking || !this.CanStartWork(e)) 
         return; 
 
      // Make sure we have an item 
      var 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 item 
      item.Transform = LeadMatrix.Identity; 
   } 
} 
 
static class LEAD_VARS 
{ 
   public const string ImagesDir = @"C:\LEADTOOLS23\Resources\Images"; 
} 
Requirements

Target Platforms

Help Version 23.0.2024.2.29
Products | Support | Contact Us | Intellectual Property Notices
© 1991-2024 LEAD Technologies, Inc. All Rights Reserved.

Leadtools.Controls Assembly
Products | Support | Contact Us | Intellectual Property Notices
© 1991-2023 LEAD Technologies, Inc. All Rights Reserved.