Leadtools.Annotations.Core Namespace : AnnContainer Class |
public class AnnContainer
Public Class AnnContainer
public sealed class AnnContainer
@interface LTAnnContainer : NSObject<NSCopying>
public class AnnContainer
function Leadtools.Annotations.Core.AnnContainer()
The annotation container is a rectangular area that holds related annotation objects (AnnObject). In typical applications, the container holds the annotation objects for a page in a document. The size of the container is the same as the page but in annotation units (1/720 of an inch).
AnnContainer contains the following members:
Member | Description |
---|---|
Size, Offset and PageNumber |
Properties of the container: Size is the size of the container in annotation units (1/720 of an inch). Offset is an optional offset value (if the container does not start at 0,0) and PageNumber is the optional 1-based page number of the container |
The object responsible for converting display, container and image coordinates |
|
A collection of AnnObjects. These are the annotation objects that belong in this container. These objects will be rendered when the container is rendered and edited when the container is automated |
|
Special annotation object that is responsible for maintaining a list of the objects that are currently selected in the container |
|
A collection of AnnLayers used to logically group common annotation objects. |
|
Helper method used to perform hit-testing on the container and return any object under a test point or rectangle |
|
Optional values used when rendering this container: Whether it is visible and the border stroke and interior filling options |
|
Optional value indicating whether this container is enabled. If a container is disabled, then it will be used by the automation and considered read-only. |
|
Optional labels that can be used to overlay fixed text on top of the container, such as map legends |
|
Additional resources such as images that belong to the container |
|
Method to easily resize a container to a desired size. Has various options |
using Leadtools.Annotations.Automation; using Leadtools.Annotations.Core; using Leadtools.Codecs; 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); // 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); }
using Leadtools.Converters; using Leadtools.Annotations.Automation; using Leadtools.Controls; using Leadtools.Annotations.Core; using Leadtools.Codecs; [TestMethod] public async Task 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 = LeadSizeDHelper.Create(8.5 * inch, 11 * inch); // Add a red line object, from 1in 1in to 2in 2in AnnPolylineObject lineObj = new AnnPolylineObject(); lineObj.Points.Add(LeadPointDHelper.Create(1 * inch, 1 * inch)); lineObj.Points.Add(LeadPointDHelper.Create(2 * inch, 2 * inch)); lineObj.Stroke = AnnStroke.Create(AnnSolidColorBrush.Create("Red"), LeadLengthDHelper.Create(1)); container.Children.Add(lineObj); // Add a blue on yellow rectangle from 3in 3in to 4in 4in AnnRectangleObject rectObj = new AnnRectangleObject(); rectObj.Rect = LeadRectDHelper.Create(3 * inch, 3 * inch, 1 * inch, 1 * inch); rectObj.Stroke = AnnStroke.Create(AnnSolidColorBrush.Create("Blue"), LeadLengthDHelper.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"; StorageFile saveFile = await Tools.AppLocalFolder.CreateFileAsync(destFileName); await codecs.SaveAsync(saveFile, container, AnnFormat.Annotations, 1); // delete the container container = null; // Show information about the data we just saved AnnCodecsInfo info = await codecs.GetInfoAsync(saveFile); 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 = await codecs.LoadAsync(saveFile, 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); }