C#
VB
C++
This class extends AnnDesigner to provide standard functionality for running Annotation objects on an annotation container.
[SerializableAttribute()]public class AnnRunDesigner : AnnDesigner
<SerializableAttribute()>Public Class AnnRunDesignerInherits Leadtools.Annotations.AnnDesigner
[SerializableAttribute()]public ref class AnnRunDesigner : public Leadtools.Annotations.AnnDesigner
Other specific annotation object classes such as AnnButtonRunDesigner and AnnAudioRunDesigner derive from this base class.
Uses an AnnRunDesigner to handle a button click
using Leadtools;using Leadtools.Annotations;using Leadtools.Codecs;using Leadtools.WinForms;class MyForm1 : Form{AnnContainer container;RasterImageViewer viewer;RasterCodecs codecs;AnnDesigner currentDesigner;public MyForm1(string title){Text = title;Size = new Size(500, 200);viewer = new RasterImageViewer();viewer.TransformChanged += new EventHandler(viewer_TransformChanged);viewer.PostImagePaint += new PaintEventHandler(viewer_PostImagePaint);viewer.MouseDown += new MouseEventHandler(viewer_MouseDown);viewer.MouseMove += new MouseEventHandler(viewer_MouseMove);viewer.MouseUp += new MouseEventHandler(viewer_MouseUp);viewer.LostFocus += new EventHandler(viewer_LostFocus);// load an image into the viewercodecs = new RasterCodecs();string fileName = Path.Combine(LEAD_VARS.ImagesDir, "image1.cmp");viewer.Image = codecs.Load(fileName);// create and set up the containercontainer = new AnnContainer();container.Bounds = new AnnRectangle(0, 0, viewer.ImageSize.Width, viewer.ImageSize.Height);container.UnitConverter = new AnnUnitConverter(viewer.ImageDpiX, viewer.ImageDpiY);// Add the viewerviewer.Dock = DockStyle.Fill;Controls.Add(viewer);viewer.BringToFront();// add a few objects to the containerAnnRectangleObject rectObj = new AnnRectangleObject();rectObj.Bounds = new AnnRectangle(100, 100, 200, 200, AnnUnit.Pixel);rectObj.Pen = new AnnPen(Color.Blue, new AnnLength(2, AnnUnit.Pixel));rectObj.Brush = new AnnSolidBrush(Color.Yellow);container.Objects.Add(rectObj);AnnButtonObject buttonObj = new AnnButtonObject();buttonObj.Bounds = new AnnRectangle(100, 320, 200, 24, AnnUnit.Pixel);buttonObj.Text = "Goto Leadtools website";buttonObj.TextColor = Color.Black;buttonObj.Font = new AnnFont("Arial", new AnnLength(8, AnnUnit.Point), FontStyle.Regular);buttonObj.Hyperlink = @"https://www.leadtools.com";container.Objects.Add(buttonObj);}private void viewer_TransformChanged(object sender, EventArgs e){// set up the container transformationif (viewer.Image != null && container != null)container.Transform = viewer.Transform.Clone();}private void viewer_PostImagePaint(object sender, PaintEventArgs e){// draw the container and its objects on this viewerif (viewer.Image != null && container != null)container.Draw(e.Graphics);}private void viewer_MouseDown(object sender, MouseEventArgs e){bool handled = false;// see if a designer is currently running, if so, let it handle this eventif (currentDesigner != null)handled = currentDesigner.MouseDown(e);if (!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 runningAnnPoint pt = new AnnPoint(e.X, e.Y);AnnObject obj = container.HitTest(pt, 2);if (obj != null){// yes, start the run designer for this objectif (obj is AnnButtonObject){AnnButtonRunDesigner buttonRunDesigner = new AnnButtonRunDesigner();StartRunning(buttonRunDesigner, obj, e);}else{AnnRunDesigner runDesigner = new AnnRunDesigner();StartRunning(runDesigner, obj, e);}}}}private void StartRunning(AnnRunDesigner runDesigner, AnnObject obj, MouseEventArgs e){// set up the current designerrunDesigner.Run += new EventHandler<AnnRunDesignerEventArgs>(OnDesignerRun);runDesigner.Owner = viewer;runDesigner.Container = container;runDesigner.ClipCursor = true;runDesigner.Object = obj;runDesigner.HitTestBuffer = 2;runDesigner.Start();currentDesigner = runDesigner;currentDesigner.MouseDown(e);}private void OnDesignerRun(object sender, AnnRunDesignerEventArgs e){// show information on the current edit operationConsole.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 boxif (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));}}private void viewer_MouseMove(object sender, MouseEventArgs e){bool handled = false;// see if a designer is currently running, if so, let it handle this eventif (currentDesigner != null)handled = currentDesigner.MouseMove(e);}private void viewer_MouseUp(object sender, MouseEventArgs e){bool handled = false;// see if a designer is currently running, if so, let it handle this eventif (currentDesigner != null)handled = currentDesigner.MouseUp(e);}private void viewer_LostFocus(object sender, EventArgs e){// see if a designer is currently running, if so, cancel itif (currentDesigner != null)currentDesigner.Cancel();}}public void AnnRunDesigner_AnnRunDesigner(string title){MyForm1 form = new MyForm1(title);form.ShowDialog();}static class LEAD_VARS{public const string ImagesDir = @"C:\Users\Public\Documents\LEADTOOLS Images";}
Imports LeadtoolsImports Leadtools.AnnotationsImports Leadtools.CodecsImports Leadtools.WinFormsPrivate Class MyForm1 : Inherits FormPrivate myAnnContainer As AnnContainerPrivate viewer As RasterImageViewerPrivate codecs As RasterCodecsPrivate currentDesigner As AnnDesignerPublic Sub New(ByVal title As String)Text = titleSize = New Size(500, 200)viewer = New RasterImageViewer()AddHandler viewer.TransformChanged, AddressOf viewer_TransformChangedAddHandler viewer.PostImagePaint, AddressOf viewer_PostImagePaintAddHandler viewer.MouseDown, AddressOf viewer_MouseDownAddHandler viewer.MouseMove, AddressOf viewer_MouseMoveAddHandler viewer.MouseUp, AddressOf viewer_MouseUpAddHandler viewer.LostFocus, AddressOf viewer_LostFocus' load an image into the viewercodecs = New RasterCodecs()viewer.Image = codecs.Load(Path.Combine(LEAD_VARS.ImagesDir, "image1.cmp")) ' fix this path to an existing image file on your system' create and set up the containermyAnnContainer = New AnnContainer()myAnnContainer.Bounds = New AnnRectangle(0, 0, viewer.ImageSize.Width, viewer.ImageSize.Height)myAnnContainer.UnitConverter = New AnnUnitConverter(viewer.ImageDpiX, viewer.ImageDpiY)' Add the viewerviewer.Dock = DockStyle.FillControls.Add(viewer)viewer.BringToFront()' add a few objects to the containerDim rectObj As AnnRectangleObject = New AnnRectangleObject()rectObj.Bounds = New AnnRectangle(100, 100, 200, 200, AnnUnit.Pixel)rectObj.Pen = New AnnPen(Color.Blue, New AnnLength(2, AnnUnit.Pixel))rectObj.Brush = New AnnSolidBrush(Color.Yellow)myAnnContainer.Objects.Add(rectObj)Dim buttonObj As AnnButtonObject = New AnnButtonObject()buttonObj.Bounds = New AnnRectangle(100, 320, 200, 24, AnnUnit.Pixel)buttonObj.Text = "Goto Leadtools website"buttonObj.TextColor = Color.BlackbuttonObj.Font = New AnnFont("Arial", New AnnLength(8, AnnUnit.Point), FontStyle.Regular)buttonObj.Hyperlink = "https://www.leadtools.com"myAnnContainer.Objects.Add(buttonObj)End SubPrivate Sub viewer_TransformChanged(ByVal sender As Object, ByVal e As EventArgs)' set up the container transformationIf Not viewer.Image Is Nothing AndAlso Not myAnnContainer Is Nothing ThenmyAnnContainer.Transform = viewer.Transform.Clone()End IfEnd SubPrivate Sub viewer_PostImagePaint(ByVal sender As Object, ByVal e As PaintEventArgs)' draw the container and its objects on this viewerIf Not viewer.Image Is Nothing AndAlso Not myAnnContainer Is Nothing ThenmyAnnContainer.Draw(e.Graphics)End IfEnd SubPrivate Sub viewer_MouseDown(ByVal sender As Object, ByVal e As MouseEventArgs)Dim handled As Boolean = False' see if a designer is currently running, if so, let it handle this eventIf Not currentDesigner Is Nothing Thenhandled = currentDesigner.MouseDown(e)End IfIf (Not 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 runningDim pt As AnnPoint = New AnnPoint(e.X, e.Y)Dim obj As AnnObject = myAnnContainer.HitTest(pt, 2)If Not obj Is Nothing Then' yes, start the run designer for this objectIf TypeOf obj Is AnnButtonObject ThenDim buttonRunDesigner As AnnButtonRunDesigner = New AnnButtonRunDesigner()StartRunning(buttonRunDesigner, obj, e)ElseDim runDesigner As AnnRunDesigner = New AnnRunDesigner()StartRunning(runDesigner, obj, e)End IfEnd IfEnd IfEnd SubPrivate Sub StartRunning(ByVal runDesigner As AnnRunDesigner, ByVal obj As AnnObject, ByVal e As MouseEventArgs)' set up the current designerAddHandler runDesigner.Run, AddressOf OnDesignerRunrunDesigner.Owner = viewerrunDesigner.Container = myAnnContainerrunDesigner.ClipCursor = TruerunDesigner.Object = objrunDesigner.HitTestBuffer = 2runDesigner.Start()currentDesigner = runDesignercurrentDesigner.MouseDown(e)End SubPrivate Sub OnDesignerRun(ByVal sender As Object, ByVal e As AnnRunDesignerEventArgs)' show information on the current edit operationConsole.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 boxIf e.Object.Hyperlink Is Nothing OrElse e.Object.Hyperlink = String.Empty ThenMessageBox.Show(String.Format("You clicked an object of type {0} that does not have a hyperlink", e.Object.GetType().Name))End IfEnd IfEnd SubPrivate Sub viewer_MouseMove(ByVal sender As Object, ByVal e As MouseEventArgs)Dim handled As Boolean = False' see if a designer is currently running, if so, let it handle this eventIf Not currentDesigner Is Nothing Thenhandled = currentDesigner.MouseMove(e)End IfEnd SubPrivate Sub viewer_MouseUp(ByVal sender As Object, ByVal e As MouseEventArgs)Dim handled As Boolean = False' see if a designer is currently running, if so, let it handle this eventIf Not currentDesigner Is Nothing Thenhandled = currentDesigner.MouseUp(e)End IfEnd SubPrivate Sub viewer_LostFocus(ByVal sender As Object, ByVal e As EventArgs)' see if a designer is currently running, if so, cancel itIf Not currentDesigner Is Nothing ThencurrentDesigner.Cancel()End IfEnd SubEnd ClassPublic Sub AnnRunDesigner_AnnRunDesigner(ByVal title As String)Dim form As MyForm1 = New MyForm1(title)form.ShowDialog()End SubPublic NotInheritable Class LEAD_VARSPublic Const ImagesDir As String = "C:\Users\Public\Documents\LEADTOOLS Images"End Class
Raster .NET | C API | C++ Class Library | JavaScript HTML5
Document .NET | C API | C++ Class Library | JavaScript HTML5
Medical .NET | C API | C++ Class Library | JavaScript HTML5
Medical Web Viewer .NET
