Leadtools.Annotations Namespace : AnnRunDesigner Class |
[SerializableAttribute()] public class AnnRunDesigner : AnnDesigner
'Declaration <SerializableAttribute()> Public Class AnnRunDesigner Inherits AnnDesigner
'Usage Dim instance As AnnRunDesigner
public sealed class AnnRunDesigner : AnnDesigner
function Leadtools.Annotations.AnnRunDesigner()
[SerializableAttribute()] public ref class AnnRunDesigner : public AnnDesigner
Private Class MyForm1 : Inherits Form Private myAnnContainer As AnnContainer Private viewer As RasterImageViewer Private codecs As RasterCodecs Private currentDesigner As AnnDesigner Public Sub New(ByVal title As String) Text = title Size = New Size(500, 200) viewer = New RasterImageViewer() AddHandler viewer.TransformChanged, AddressOf viewer_TransformChanged AddHandler viewer.PostImagePaint, AddressOf viewer_PostImagePaint AddHandler viewer.MouseDown, AddressOf viewer_MouseDown AddHandler viewer.MouseMove, AddressOf viewer_MouseMove AddHandler viewer.MouseUp, AddressOf viewer_MouseUp AddHandler viewer.LostFocus, AddressOf viewer_LostFocus ' load an image into the viewer codecs = 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 container myAnnContainer = New AnnContainer() myAnnContainer.Bounds = New AnnRectangle(0, 0, viewer.ImageSize.Width, viewer.ImageSize.Height) myAnnContainer.UnitConverter = New AnnUnitConverter(viewer.ImageDpiX, viewer.ImageDpiY) ' Add the viewer viewer.Dock = DockStyle.Fill Controls.Add(viewer) viewer.BringToFront() ' add a few objects to the container Dim 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.Black buttonObj.Font = New AnnFont("Arial", New AnnLength(8, AnnUnit.Point), FontStyle.Regular) buttonObj.Hyperlink = "http://www.leadtools.com" myAnnContainer.Objects.Add(buttonObj) End Sub Private Sub viewer_TransformChanged(ByVal sender As Object, ByVal e As EventArgs) ' set up the container transformation If Not viewer.Image Is Nothing AndAlso Not myAnnContainer Is Nothing Then myAnnContainer.Transform = viewer.Transform.Clone() End If End Sub Private Sub viewer_PostImagePaint(ByVal sender As Object, ByVal e As PaintEventArgs) ' draw the container and its objects on this viewer If Not viewer.Image Is Nothing AndAlso Not myAnnContainer Is Nothing Then myAnnContainer.Draw(e.Graphics) End If End Sub Private 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 event If Not currentDesigner Is Nothing Then handled = currentDesigner.MouseDown(e) End If If (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 running Dim 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 object If TypeOf obj Is AnnButtonObject Then Dim buttonRunDesigner As AnnButtonRunDesigner = New AnnButtonRunDesigner() StartRunning(buttonRunDesigner, obj, e) Else Dim runDesigner As AnnRunDesigner = New AnnRunDesigner() StartRunning(runDesigner, obj, e) End If End If End If End Sub Private Sub StartRunning(ByVal runDesigner As AnnRunDesigner, ByVal obj As AnnObject, ByVal e As MouseEventArgs) ' set up the current designer AddHandler runDesigner.Run, AddressOf OnDesignerRun runDesigner.Owner = viewer runDesigner.Container = myAnnContainer runDesigner.ClipCursor = True runDesigner.Object = obj runDesigner.HitTestBuffer = 2 runDesigner.Start() currentDesigner = runDesigner currentDesigner.MouseDown(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 Private 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 event If Not currentDesigner Is Nothing Then handled = currentDesigner.MouseMove(e) End If End Sub Private 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 event If Not currentDesigner Is Nothing Then handled = currentDesigner.MouseUp(e) End If End Sub Private Sub viewer_LostFocus(ByVal sender As Object, ByVal e As EventArgs) ' see if a designer is currently running, if so, cancel it If Not currentDesigner Is Nothing Then currentDesigner.Cancel() End If End Sub End Class Public Sub AnnRunDesigner_AnnRunDesigner(ByVal title As String) Dim form As MyForm1 = New MyForm1(title) form.ShowDialog() End Sub Public NotInheritable Class LEAD_VARS Public Const ImagesDir As String = "C:\Users\Public\Documents\LEADTOOLS Images" End Class
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 viewer codecs = new RasterCodecs(); string fileName = Path.Combine(LEAD_VARS.ImagesDir, "image1.cmp"); viewer.Image = codecs.Load(fileName); // create and set up the container container = new AnnContainer(); container.Bounds = new AnnRectangle(0, 0, viewer.ImageSize.Width, viewer.ImageSize.Height); container.UnitConverter = new AnnUnitConverter(viewer.ImageDpiX, viewer.ImageDpiY); // Add the viewer viewer.Dock = DockStyle.Fill; Controls.Add(viewer); viewer.BringToFront(); // add a few objects to the container AnnRectangleObject 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 = @"http://www.leadtools.com"; container.Objects.Add(buttonObj); } private void viewer_TransformChanged(object sender, EventArgs e) { // set up the container transformation if(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 viewer if(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 event if(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 running AnnPoint pt = new AnnPoint(e.X, e.Y); AnnObject obj = container.HitTest(pt, 2); if(obj != null) { // yes, start the run designer for this object if(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 designer runDesigner.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 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)); } } private void viewer_MouseMove(object sender, MouseEventArgs e) { bool handled = false; // see if a designer is currently running, if so, let it handle this event if(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 event if(currentDesigner != null) handled = currentDesigner.MouseUp(e); } private void viewer_LostFocus(object sender, EventArgs e) { // see if a designer is currently running, if so, cancel it if(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"; }
Target Platforms: Windows 7, Windows Vista SP1 or later, Windows XP SP3, Windows Server 2008 (Server Core not supported), Windows Server 2008 R2 (Server Core supported with SP1 or later), Windows Server 2003 SP2