LEADTOOLS Annotations for WPF and Silverlight (Leadtools.Windows.Annotations assembly)

AnnRunDesigner Class

Show in webframe
Example 





Members 
This class extends AnnDesigner to provide standard functionality for running Annotation objects on an annotation container.
Object Model
Syntax
public class AnnRunDesigner : AnnDesigner 
'Declaration
 
Public Class AnnRunDesigner 
   Inherits AnnDesigner
'Usage
 
Dim instance As AnnRunDesigner

            

            
public ref class AnnRunDesigner : public AnnDesigner 
Remarks
Other specific annotation object classes such as AnnButtonRunDesigner derive from this base class.
Example
Copy Code  
Imports Leadtools.Windows.Controls
Imports Leadtools.Windows.Annotations

Private Class MyWindow1 : Inherits Window
   Private container As AnnContainer
   Private viewer As ImageViewer
   Private currentDesigner As AnnDesigner
   Public Sub New(ByVal title As String)
      Me.Title = title
      Me.Width = 500
      Me.Height = 200

      ' load an image into the viewer
      viewer = New ImageViewer()
      ' fix this path to an existing image file on your system
      viewer.Source = New BitmapImage(New Uri(Path.Combine(LEAD_VARS.ImagesDir, "cannon.jpg")))
      viewer.Width = Double.NaN
      viewer.Height = Double.NaN

      ' create and set up the container
      container = New AnnContainer()
      container.Width = viewer.Source.Width
      container.Height = viewer.Source.Height

      AddHandler container.MouseLeftButtonDown, AddressOf container_MouseLeftButtonDown
      AddHandler container.MouseMove, AddressOf container_MouseMove
      AddHandler container.MouseLeftButtonUp, AddressOf container_MouseLeftButtonUp

      ' Set the container as a content of viewer
      viewer.Content = container

      ' Create a dockPanel to contain the controls
      Dim panel As DockPanel = New DockPanel()
      panel.Children.Add(viewer)

      ' set the viewer as a content of the window
      Me.Content = panel

      ' add a few objects to the container
      Dim rectObj As AnnRectangleObject = New AnnRectangleObject()
      rectObj.Rect = New Rect(100, 100, 200, 200)
      rectObj.Stroke = Colors.Blue
      rectObj.StrokeThickness = 2.0
      rectObj.Fill = Colors.Yellow
      container.Children.Add(rectObj)

      Dim buttonObj As AnnButtonObject = New AnnButtonObject()
      buttonObj.Rect = New Rect(100, 320, 200, 2400)
      buttonObj.Text = "Goto Leadtools website"
      buttonObj.Foreground = Colors.Black
      buttonObj.FontFamilyName = "Arial"
      buttonObj.FontSize = 8
      buttonObj.Hyperlink = "http://www.leadtools.com"
      container.Children.Add(buttonObj)
   End Sub

   Private Sub container_MouseLeftButtonDown(ByVal sender As Object, ByVal e As MouseButtonEventArgs)
      ' see if a designer is currently running, if so, let it handle this event
      If Not currentDesigner Is Nothing Then
         e = New MouseButtonEventArgs(InputManager.Current.PrimaryMouseDevice, e.Timestamp, MouseButton.Left)
         currentDesigner.OnMouseRightButtonDown(DirectCast(sender, AnnContainer), e)
      End If

      If (Not e.Handled) Then
         ' the mouse click was not handled by a designer
         ' check if the click was on top of an existing object that we can start running
         Dim pt As System.Windows.Point = e.GetPosition(Me.container)
         Dim obj As AnnObject = container.HitTest(pt)
         If Not obj Is Nothing Then
            ' yes, start the run designer for this object
            If TypeOf obj Is AnnButtonObject Then
               Dim buttonRunDesigner As AnnButtonRunDesigner = New AnnButtonRunDesigner(Me.container)
               StartRunning(buttonRunDesigner, obj, e)
            Else
               Dim runDesigner As AnnRunDesigner = New AnnRunDesigner(Me.container)
               StartRunning(runDesigner, obj, e)
            End If
         End If
      End If
   End Sub

   Private Sub container_MouseMove(ByVal sender As Object, ByVal e As MouseEventArgs)
      ' see if a designer is currently running, if so, let it handle this event
      If Not currentDesigner Is Nothing Then
         e = New MouseEventArgs(InputManager.Current.PrimaryMouseDevice, e.Timestamp)
         currentDesigner.OnMouseMove(DirectCast(sender, AnnContainer), e)
      End If
   End Sub

   Private Sub container_MouseLeftButtonUp(ByVal sender As Object, ByVal e As MouseButtonEventArgs)
      ' see if a designer is currently running, if so, let it handle this event
      If Not currentDesigner Is Nothing Then
         e = New MouseButtonEventArgs(InputManager.Current.PrimaryMouseDevice, e.Timestamp, MouseButton.Left)
         currentDesigner.OnMouseLeftButtonUp(DirectCast(sender, AnnContainer), e)
      End If
   End Sub

   Private Sub StartRunning(ByVal runDesigner As AnnRunDesigner, ByVal obj As AnnObject, ByVal e As MouseButtonEventArgs)
      ' set up the current designer
      AddHandler runDesigner.Run, AddressOf OnDesignerRun
      runDesigner.Object = obj
      runDesigner.Start()
      currentDesigner = runDesigner
      e = New MouseButtonEventArgs(InputManager.Current.PrimaryMouseDevice, e.Timestamp, MouseButton.Left)
      currentDesigner.OnMouseLeftButtonUp(runDesigner.Container, e)
   End Sub

   Private Sub OnDesignerRun(ByVal sender As Object, ByVal e As AnnRunDesignerEventArgs)
      ' show information on the current edit operation
      Console.WriteLine("Object: {0}, Status: {1}, ", e.Object.GetType().Name, e.OperationStatus)

      If e.OperationStatus = AnnDesignerOperationStatus.End Then
         ' check if the object does not have a hyperlink, if so, show a message box
         If e.Object.Hyperlink Is Nothing OrElse e.Object.Hyperlink = String.Empty Then
            MessageBox.Show(String.Format("You clicked an object of type {0} that does not have a hyperlink", e.Object.GetType().Name))
         End If
      End If
   End Sub
End Class

Public Sub AnnRunDesigner_AnnRunDesigner(ByVal title As String)
   Dim window As MyWindow1 = New MyWindow1(title)
   window.ShowDialog()
End Sub

Public NotInheritable Class LEAD_VARS
Public Const ImagesDir As String = "C:\Users\Public\Documents\LEADTOOLS Images"
End Class
using Leadtools.Windows.Controls;
using Leadtools.Windows.Annotations;
using Leadtools.Demos;
using Leadtools.Help;

class MyWindow1 : Window
{
   AnnContainer container;
   ImageViewer viewer;
   AnnDesigner currentDesigner;
   public MyWindow1(string title)
   {
      this.Title = title;
      this.Width = 500;
      this.Height = 200;

      // load an image into the viewer
      viewer = new ImageViewer();

      // fix this path to an existing image file on your system
      viewer.Source = new BitmapImage(new Uri(Path.Combine(LEAD_VARS.ImagesDir, "cannon.jpg")));  
      viewer.Width = double.NaN;
      viewer.Height = double.NaN;

      // create and set up the container
      container = new AnnContainer();
      container.Width = viewer.Source.Width;
      container.Height = viewer.Source.Height;

      container.MouseLeftButtonDown += new MouseButtonEventHandler(container_MouseLeftButtonDown);
      container.MouseMove += new MouseEventHandler(container_MouseMove);
      container.MouseLeftButtonUp += new MouseButtonEventHandler(container_MouseLeftButtonUp);

      // Set the container as a content of viewer
      viewer.Content = container;

      // Create a dockPanel to contain the controls
      DockPanel panel = new DockPanel();
      panel.Children.Add(viewer);

      // set the viewer as a content of the window
      this.Content = panel;

      // add a few objects to the container
      AnnRectangleObject rectObj = new AnnRectangleObject();
      rectObj.Rect = new Rect(100, 100, 200, 200);
      rectObj.Stroke = Colors.Blue;
      rectObj.Fill = Colors.Yellow;
      rectObj.StrokeThickness = 2.0;
      container.Children.Add(rectObj);

      AnnButtonObject buttonObj = new AnnButtonObject();

      buttonObj.Rect = new Rect(100, 320, 200, 2400);
      buttonObj.Foreground = Colors.Black;
      buttonObj.FontFamilyName = "Arial";
      buttonObj.Text = "Goto Leadtools website";
      buttonObj.FontSize = 8;
      buttonObj.Hyperlink = @"http://www.leadtools.com";
      container.Children.Add(buttonObj);
   }

   void container_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
   {
      // see if a designer is currently running, if so, let it handle this event
      if(currentDesigner != null)
      {
         e = new MouseButtonEventArgs(InputManager.Current.PrimaryMouseDevice,
            e.Timestamp, 
            MouseButton.Left);
         currentDesigner.OnMouseRightButtonDown(sender as AnnContainer, e);
      }

      if(!e.Handled)
      {
         // the mouse click was not handled by a designer
         // check if the click was on top of an existing object that we can start running
         Point pt = e.GetPosition(this.container);
         AnnObject obj = container.HitTest(pt);
         if (obj != null)
         {
            // yes, start the run designer for this object
            if(obj is AnnButtonObject)
            {
               AnnButtonRunDesigner buttonRunDesigner = new AnnButtonRunDesigner(this.container);
               StartRunning(buttonRunDesigner, obj, e);
            }
            else
            {
               AnnRunDesigner runDesigner = new AnnRunDesigner(this.container);
               StartRunning(runDesigner, obj, e);
            }
         }
      }
   }

   void container_MouseMove(object sender, MouseEventArgs e)
   {
      // see if a designer is currently running, if so, let it handle this event
      if(currentDesigner != null)
      {
         e = new MouseEventArgs(InputManager.Current.PrimaryMouseDevice,
            e.Timestamp);
         currentDesigner.OnMouseMove(sender as AnnContainer,e);
      }
   }

   void container_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
   {
      // see if a designer is currently running, if so, let it handle this event
      if(currentDesigner != null)
      {
         e = new MouseButtonEventArgs(InputManager.Current.PrimaryMouseDevice,
            e.Timestamp,
            MouseButton.Left);
         currentDesigner.OnMouseLeftButtonUp(sender as AnnContainer, e);
      }
   }

   private void StartRunning(AnnRunDesigner runDesigner, AnnObject obj, MouseButtonEventArgs e)
   {
      // set up the current designer
      runDesigner.Run += new EventHandler<AnnRunDesignerEventArgs>(OnDesignerRun);
      runDesigner.Object = obj;
      runDesigner.Start();
      currentDesigner = runDesigner;
      e = new MouseButtonEventArgs(InputManager.Current.PrimaryMouseDevice,
         e.Timestamp, 
         MouseButton.Left);
      currentDesigner.OnMouseLeftButtonUp(runDesigner.Container, e);
   }

   private void OnDesignerRun(object sender, AnnRunDesignerEventArgs e)
   {
      // show information on the current edit operation
      Console.WriteLine("Object: {0}, Status: {1}, ", e.Object.GetType().Name, e.OperationStatus);

      if(e.OperationStatus == AnnDesignerOperationStatus.End)
      {
         // check if the object does not have a hyperlink, if so, show a message box
         if(e.Object.Hyperlink == null || e.Object.Hyperlink == string.Empty)
            MessageBox.Show(String.Format("You clicked an object of type {0} that does not have a hyperlink", e.Object.GetType().Name));
      }
   }
}

public void AnnRunDesigner_AnnRunDesigner(string title)
{
   MyWindow1 window = new MyWindow1(title);
   window.ShowDialog();
}

static class LEAD_VARS
{
public const string ImagesDir = @"C:\Users\Public\Documents\LEADTOOLS Images";
}
using Leadtools.Windows.Controls;
using Leadtools.Windows.Annotations;
using Leadtools.Examples;

class MyWindow1 : ChildWindow 
{
   AnnContainer container;
   ImageViewer viewer;
   AnnDesigner currentDesigner;
   public MyWindow1(string title)
   {
      this.Title = title;
      this.Width = 500;
      this.Height = 200;

      // load an image into the viewer
      // fix this path to an existing image file on your system
      viewer = new ImageViewer();
      viewer.Source = new BitmapImage(new Uri(LeadtoolsExamples.Common.ImagesPath.Path + "ScarletMacaws.jpg"));  
      viewer.Width = double.NaN;
      viewer.Height = double.NaN;

      // create and set up the container
      container = new AnnContainer();
      BitmapSource bmp = (BitmapSource)viewer.Source;
      container.Width = bmp.PixelWidth;
      container.Height = bmp.PixelHeight;

      container.MouseLeftButtonDown += new MouseButtonEventHandler(container_MouseLeftButtonDown);
      container.MouseMove += new MouseEventHandler(container_MouseMove);
      container.MouseLeftButtonUp += new MouseButtonEventHandler(container_MouseLeftButtonUp);

      // Set the container as a content of viewer
      viewer.Content = container;

      // Create a Panel to contain the controls
      StackPanel panel = new StackPanel();
      panel.Children.Add(viewer);

      // set the viewer as a content of the window
      this.Content = panel;

      // add a few objects to the container
      AnnRectangleObject rectObj = new AnnRectangleObject();
      rectObj.Rect = new Rect(100, 100, 200, 200);
      rectObj.Stroke = Colors.Blue;
      rectObj.Fill = Colors.Yellow;
      rectObj.StrokeThickness = 2.0;
      container.Children.Add(rectObj);
   }

   void container_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
   {
      // see if a designer is currently running, if so, let it handle this event
      if(currentDesigner != null)
      {
         currentDesigner.OnMouseRightButtonDown(sender as AnnContainer, e);
      }

      if(!e.Handled)
      {
         // the mouse click was not handled by a designer
         // check if the click was on top of an existing object that we can start running
         Point pt = e.GetPosition(this.container);
         AnnObject obj = container.HitTest(pt);
         if (obj != null)
         {
            // yes, start the run designer for this object
            AnnRunDesigner runDesigner = new AnnRunDesigner(this.container);
            StartRunning(runDesigner, obj, e);
         }
      }
   }

   void container_MouseMove(object sender, MouseEventArgs e)
   {
      // see if a designer is currently running, if so, let it handle this event
      if(currentDesigner != null)
      {
         currentDesigner.OnMouseMove(sender as AnnContainer,e);
      }
   }

   void container_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
   {
      // see if a designer is currently running, if so, let it handle this event
      if(currentDesigner != null)
      {
         currentDesigner.OnMouseLeftButtonUp(sender as AnnContainer, e);
      }
   }

   private void StartRunning(AnnRunDesigner runDesigner, AnnObject obj, MouseButtonEventArgs e)
   {
      // set up the current designer
      runDesigner.Run += new EventHandler<AnnRunDesignerEventArgs>(OnDesignerRun);
      runDesigner.Object = obj;
      runDesigner.Start();
      currentDesigner = runDesigner;
      currentDesigner.OnMouseLeftButtonUp(runDesigner.Container, e);
   }

   private void OnDesignerRun(object sender, AnnRunDesignerEventArgs e)
   {
      // show information on the current edit operation
      Console.WriteLine("Object: {0}, Status: {1}, ", e.Object.GetType().Name, e.OperationStatus);

      if(e.OperationStatus == AnnDesignerOperationStatus.End)
      {
         // check if the object does not have a hyperlink, if so, show a message box
         if(e.Object.Hyperlink == null || e.Object.Hyperlink == string.Empty)
            MessageBox.Show(String.Format("You clicked an object of type {0} that does not have a hyperlink", 
                e.Object.GetType().Name));
      }
   }
}

public void AnnRunDesigner_AnnRunDesigner(string title)
{
   MyWindow1 window = new MyWindow1(title);
   window.Show();
}
Imports Leadtools.Windows.Controls
Imports Leadtools.Windows.Annotations

Private Class MyWindow1 : Inherits ChildWindow
   Private container As AnnContainer
   Private viewer As ImageViewer
   Private currentDesigner As AnnDesigner
   Public Sub New(ByVal title As String)
      Me.Title = title
      Me.Width = 500
      Me.Height = 200

      ' load an image into the viewer
      viewer = New ImageViewer()

      ' fix this path to an existing image file on your system
      viewer.Source = _
         New BitmapImage(New Uri(LeadtoolsExamples.Common.ImagesPath.Path & "ScarletMacaws.jpg"))
      viewer.Width = Double.NaN
      viewer.Height = Double.NaN

      ' create and set up the container
      container = New AnnContainer()
      Dim bmp As BitmapSource = CType(viewer.Source, BitmapSource)
      container.Width = bmp.PixelWidth
      container.Height = bmp.PixelHeight

      AddHandler container.MouseLeftButtonDown, AddressOf container_MouseLeftButtonDown
      AddHandler container.MouseMove, AddressOf container_MouseMove
      AddHandler container.MouseLeftButtonUp, AddressOf container_MouseLeftButtonUp

      ' Set the container as a content of viewer
      viewer.Content = container

      ' Create a Panel to contain the controls
      Dim panel As StackPanel = New StackPanel()
      panel.Children.Add(viewer)

      ' set the viewer as a content of the window
      Me.Content = panel

      ' add a few objects to the container
      Dim rectObj As AnnRectangleObject = New AnnRectangleObject()
      rectObj.Rect = New Rect(100, 100, 200, 200)
      rectObj.Stroke = Colors.Blue
      rectObj.Fill = Colors.Yellow
      rectObj.StrokeThickness = 2.0
      container.Children.Add(rectObj)
   End Sub

   Private Sub container_MouseLeftButtonDown(ByVal sender As Object, ByVal e As MouseButtonEventArgs)
      ' see if a designer is currently running, if so, let it handle this event
      If Not currentDesigner Is Nothing Then
         currentDesigner.OnMouseRightButtonDown(TryCast(sender, AnnContainer), e)
      End If

      If (Not e.Handled) Then
         ' the mouse click was not handled by a designer
         ' check if the click was on top of an existing object that we can start running
         Dim pt As Point = e.GetPosition(Me.container)
         Dim obj As AnnObject = container.HitTest(pt)
         If Not obj Is Nothing Then
            ' yes, start the run designer for this object
            Dim runDesigner As AnnRunDesigner = New AnnRunDesigner(Me.container)
            StartRunning(runDesigner, obj, e)
         End If
      End If
   End Sub

   Private Sub container_MouseMove(ByVal sender As Object, ByVal e As MouseEventArgs)
      ' see if a designer is currently running, if so, let it handle this event
      If Not currentDesigner Is Nothing Then
         currentDesigner.OnMouseMove(TryCast(sender, AnnContainer),e)
      End If
   End Sub

   Private Sub container_MouseLeftButtonUp(ByVal sender As Object, ByVal e As MouseButtonEventArgs)
      ' see if a designer is currently running, if so, let it handle this event
      If Not currentDesigner Is Nothing Then
         currentDesigner.OnMouseLeftButtonUp(TryCast(sender, AnnContainer), e)
      End If
   End Sub

   Private Sub StartRunning(ByVal runDesigner As AnnRunDesigner, ByVal obj As AnnObject, ByVal e As MouseButtonEventArgs)
      ' set up the current designer
      AddHandler runDesigner.Run, AddressOf OnDesignerRun
      runDesigner.Object = obj
      runDesigner.Start()
      currentDesigner = runDesigner
      currentDesigner.OnMouseLeftButtonUp(runDesigner.Container, e)
   End Sub

   Private Sub OnDesignerRun(ByVal sender As Object, ByVal e As AnnRunDesignerEventArgs)
      ' show information on the current edit operation
      Console.WriteLine("Object: {0}, Status: {1}, ", e.Object.GetType().Name, e.OperationStatus)

      If e.OperationStatus = AnnDesignerOperationStatus.End Then
         ' check if the object does not have a hyperlink, if so, show a message box
         If e.Object.Hyperlink Is Nothing OrElse e.Object.Hyperlink = String.Empty Then
            MessageBox.Show(String.Format("You clicked an object of type {0} that does not have a hyperlink", e.Object.GetType().Name))
         End If
      End If
   End Sub
End Class

Public Sub AnnRunDesigner_AnnRunDesigner(ByVal title As String)
   Dim window As MyWindow1 = New MyWindow1(title)
   window.Show()
End Sub
Requirements

Target Platforms

See Also

Reference

AnnRunDesigner Members
Leadtools.Windows.Annotations Namespace

 

 


Products | Support | Contact Us | Copyright Notices
© 2006-2014 All Rights Reserved. LEAD Technologies, Inc.