←Select platform

AnnObject Class

Summary
Defines the base class for all annotation objects.
Syntax
C#
Objective-C
C++/CLI
Java
Python
public abstract class AnnObject : IAnnObjectCloneable 
@interface LTAnnObject : NSObject<NSCoding, NSCopying> // ABSTRACT 
public abstract class AnnObject implements IAnnObjectCloneable 
public: 
   ref class AnnObject abstract : IAnnObjectCloneable 
class AnnObjectCloneable.md): 
Remarks

The AnnObject class provides all the basic functionality common to all LEADTOOLS annotation objects. AnnObject is an abstract class: you cannot instantiate objects of this class directly. Instead, you create an instance of a derived class such as AnnPolylineObject or AnnRectangleObject and use the methods and properties of the base AnnObject through the derived class.

AnnObject contains the following members:

Member Description

Points

Each AnnObject contains an array of Leadtools.LeadPointD points in container coordinates that define its location and size. How these points are interpreted to form the object shape is up to the derived class. For instance, a line object normally has two points: a starting point and an ending point. A rectangle object has four points, one for each corner (to keep track of rotated objects) and so forth.

RotateCenter and RotateGripper

Object rotation center and gripper.

Stroke, Fill and Font

The objects to use when drawing the boundary, filling the interior of an annotation object and drawing any text strings. A line object uses only the stroke object whereas a rectangle object uses both stroke and fill objects. A text object use all three to render its string.

Scale, ScaleVector, Translate and Rotate

Helper method that transforms the object instead of directly manipulating the raw points.

IsVisible and IsSelected

Hides/shows and selects/unselects an object in the container.

Hyperlink, Tag and Metadata

Extra properties that are not used directly by the object, but can be used to store a hyperlink or any user-defined data.

Password, Lock, Unlock, IsLocked and LockPicture

Properties and methods for locking an object with a password. A locked object cannot be moved nor deleted by the automation framework and can be rendered with a special "lock" picture next to it.

Opacity

Opacity value to use when rendering the object.

Labels

Text labels that can be used to draw text legends next to an object, such as a name.

Reviews Review items that can be used to add review comments and replies to this AnnObject.

HitTest

Helper method to determine whether a point intersects with this object.

Serialize and Deserialize

Saves and loads objects from an XML element. Used to load and save an object to an annotation file, as well as to perform undo/redo operations.

AnnObjects are added to a container using the AnnContainer.Children property. Objects can optionally be added to layers inside the container. For more information, refer to AnnLayer.

Example
C#
Java
using Leadtools.Annotations.Automation; 
using Leadtools.Annotations.Engine; 
using Leadtools.Codecs; 
using Leadtools.Annotations.WinForms; 
 
public void AnnContainer_AnnContainer() 
{ 
   double inch = 720.0; 
 
   // Create a new annotation container, 8.5 by 11 inches 
   AnnContainer container = new AnnContainer(); 
   // Size must be in annotation units (1/720 of an inch) 
   container.Size = LeadSizeD.Create(8.5 * inch, 11 * inch); 
   //Change Offset position 
   container.Offset = new LeadPointD(10, 10); 
 
   // Add a red line object, from 1in 1in to 2in 2in 
   AnnPolylineObject lineObj = new AnnPolylineObject(); 
   lineObj.Points.Add(LeadPointD.Create(1 * inch, 1 * inch)); 
   lineObj.Points.Add(LeadPointD.Create(2 * inch, 2 * inch)); 
   lineObj.Stroke = AnnStroke.Create(AnnSolidColorBrush.Create("Red"), LeadLengthD.Create(1)); 
   container.Children.Add(lineObj); 
 
   // Add a blue on yellow rectangle from 3in 3in to 4in 4in 
   AnnRectangleObject rectObj = new AnnRectangleObject(); 
   rectObj.Rect = LeadRectD.Create(3 * inch, 3 * inch, 1 * inch, 1 * inch); 
   rectObj.Stroke = AnnStroke.Create(AnnSolidColorBrush.Create("Blue"), LeadLengthD.Create(1)); 
   rectObj.Fill = AnnSolidColorBrush.Create("Yellow"); 
   container.Children.Add(rectObj); 
 
   // Show the container 
   ShowContainer("Before save", container); 
 
   // Create the codecs object to save and load annotations 
   AnnCodecs codecs = new AnnCodecs(); 
 
   // Save the container 
   string destFileName = @"container.xml"; 
   codecs.Save(destFileName, container, AnnFormat.Annotations, 1); 
 
   // delete the container 
   container = null; 
 
   // Show information about the data we just saved 
   AnnCodecsInfo info = codecs.GetInfo(destFileName); 
   string message; 
   if (info.Format == AnnFormat.Annotations) 
   { 
      message = "Version: "; 
      message += info.Version; 
      message += " No. of pages: "; 
      message += info.Pages.Length; 
      message += " page nos: "; 
      for (int i = 0; i < info.Pages.Length; i++) 
      { 
         message += info.Pages[i] + " "; 
      } 
   } 
   else 
   { 
      message = "Invalid annotations data"; 
   } 
 
   Debug.WriteLine(message); 
 
   // Load the container we just saved 
   container = codecs.Load(destFileName, 1); 
 
   // Show it 
   ShowContainer("After load", container); 
} 
 
private void ShowContainer(String message, AnnContainer container) 
{ 
   string str = message + "\nContainer size: "; 
 
   // Add the size 
   double inch = 720; 
   double width = container.Size.Width / inch; 
   double height = container.Size.Height / inch; 
   str += width + " by " + height + " inches" + "\n"; 
 
   // Add the objects 
   str += "Contains " + container.Children.Count + " objects(s)\n"; 
   for (int i = 0; i < container.Children.Count; i++) 
   { 
      AnnObject annObj = container.Children[i]; 
 
      str += "Object: " + annObj.FriendlyName + " at "; 
      for (int j = 0; j < annObj.Points.Count; j++) 
      { 
         LeadPointD pt = annObj.Points[j]; 
         double x = pt.X / inch; 
         double y = pt.Y / inch; 
         str += "(" + x + ", " + y + ") "; 
      } 
 
      str += "\n"; 
   } 
 
   Debug.WriteLine(str); 
} 
 
import java.io.File; 
import java.io.IOException; 
 
import org.junit.*; 
import org.junit.runner.JUnitCore; 
import org.junit.runner.Result; 
import org.junit.runner.notification.Failure; 
import static org.junit.Assert.*; 
 
import leadtools.*; 
import leadtools.annotations.engine.*; 
 
 
public void annContainerExample() { 
   final double inch = 720.0; 
 
   // create a new annotation container, 8.5 by 11 inches 
   AnnContainer container = new AnnContainer(); 
   // Size must be in annotation units (1/720 of an inch) 
   container.setSize(LeadSizeD.create(8.5 * inch, 11 * inch)); 
   // Change Offset position 
   container.setOffset(new LeadPointD(10, 10)); 
 
   // Add a red line object, from 1in 1in to 2in 2in 
   AnnPolylineObject lineObj = new AnnPolylineObject(); 
   lineObj.getPoints().add(LeadPointD.create(1 * inch, 1 * inch)); 
   lineObj.getPoints().add(LeadPointD.create(2 * inch, 2 * inch)); 
   lineObj.setStroke(AnnStroke.create(AnnSolidColorBrush.create("Red"), LeadLengthD.create(1))); 
   container.getChildren().add(lineObj); 
 
   // Add a blue on yellow rectangle from 3in 3in to 4in 4in 
   AnnRectangleObject rectObj = new AnnRectangleObject(); 
   rectObj.setRect(LeadRectD.create(3 * inch, 3 * inch, 1 * inch, 1 * inch)); 
   rectObj.setStroke(AnnStroke.create(AnnSolidColorBrush.create("Blue"), LeadLengthD.create(1))); 
   rectObj.setFill(AnnSolidColorBrush.create("Yellow")); 
   container.getChildren().add(rectObj); 
 
   // Show the container 
   showContainer("Before save", container); 
 
   // create the codecs object to save and load annotations 
   AnnCodecs codecs = new AnnCodecs(); 
 
   // Save the container 
   var xmlData = codecs.save(container, AnnFormat.ANNOTATIONS, null, 1); 
 
   // delete the container 
   container = null; 
 
   // Show information about the data we just saved 
   AnnCodecsInfo info = codecs.getInfo(xmlData); 
 
   String message; 
   if (info.getFormat() == AnnFormat.ANNOTATIONS) { 
      message = "Version: "; 
      message += info.getVersion(); 
      message += " No. of pages: "; 
      message += info.getPages().length; 
      message += " page nos: "; 
      for (int i = 0; i < info.getPages().length; i++) { 
         message += info.getPages()[i] + " "; 
      } 
   } else { 
      message = "Invalid annotations data"; 
   } 
 
   System.out.println(message); 
 
   // Load the container we just saved 
   container = codecs.load(xmlData, 1); 
 
   // Show it 
   showContainer("After load", container); 
} 
 
private void showContainer(String message, AnnContainer container) { 
   String str = message + "\nContainer size: "; 
 
   // Add the size 
   double inch = 720; 
   double width = container.getSize().getWidth() / inch; 
   double height = container.getSize().getHeight() / inch; 
   str += width + " by " + height + " inches" + "\n"; 
 
   // Add the objects 
   str += "Contains " + container.getChildren().size() + " objects(s)\n"; 
   for (int i = 0; i < container.getChildren().size(); i++) { 
      AnnObject annObj = container.getChildren().get(i); 
 
      str += "Object: " + annObj.getFriendlyName() + " at "; 
      for (int j = 0; j < annObj.getPoints().size(); j++) { 
         LeadPointD pt = annObj.getPoints().get(j); 
         double x = pt.getX() / inch; 
         double y = pt.getY() / inch; 
         str += "(" + x + ", " + y + ") "; 
      } 
 
      str += "\n"; 
   } 
 
   System.out.println(str); 
   var exists = str; 
 
   assertTrue(exists, true); 
} 
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.Annotations.Engine Assembly

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