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