Represents an annotation container.
function lt.Annotations.Engine.AnnContainer class lt.Annotations.Engine.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 for logically grouping common annotation objects. |
|
|
Helper method for performing hit-testing on the container and returning any object under a test point or rectangle. |
|
|
Optional values (whether it is visible, border stroke, interior filling options) used when rendering this container. |
|
|
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 (for example, map legends) that can be used to overlay fixed text on top of the container. |
|
|
Method for easily resizing a container to a desired size. Has options. |
This example creates a new container, adds a line object and a rectangle object to it, saves it, and then loads it back.
import { EngineHelper } from "../../utilities/EngineHelper";export class AnnEngine_AnnContainerExample {constructor() {const helper = new EngineHelper();helper.run(this.run);}run = () => {const inch = 720.0;// Create a new annotation container, 8.5 by 11 incheslet container: lt.Annotations.Engine.AnnContainer = new lt.Annotations.Engine.AnnContainer();// Size must be in annotation units (1/720 of an inch)container.size = lt.LeadSizeD.create(8.5 * inch, 11 * inch);const showContainer = (message, container) => {let str = message + "\nContainer size: ";// Add the sizeconst inch = 720;const width: number = container.size.width / inch;const height: number = container.size.height / inch;str += width + " by " + height + " inches" + "\n";// Add the objectsstr += "Contains " + container.children.count + " objects(s)\n";for (let i = 0; i < container.children.count; i++) {const annObj = container.children.item(i);str += "Object: " + annObj.get_friendlyName() + " at ";for (let j = 0; j < annObj.get_points().get_count(); j++) {const pt: lt.LeadPointD = annObj.points.item(j);const x: number = pt.x / inch;const y: number = pt.y / inch;str += "(" + x + ", " + y + ") ";}str += "\n";}alert(str);}// Add a red line object, from 1in 1in to 2in 2inconst lineObj: lt.Annotations.Engine.AnnPolylineObject = new lt.Annotations.Engine.AnnPolylineObject();lineObj.points.add(lt.LeadPointD.create(1 * inch, 1 * inch));lineObj.points.add(lt.LeadPointD.create(2 * inch, 2 * inch));lineObj.stroke = lt.Annotations.Engine.AnnStroke.create(lt.Annotations.Engine.AnnSolidColorBrush.create("red"), lt.LeadLengthD.create(1));container.children.add(lineObj);// Add a blue on yellow rectangle from 3in 3in to 4in 4inconst rectObj: lt.Annotations.Engine.AnnRectangleObject = new lt.Annotations.Engine.AnnRectangleObject();rectObj.rect = lt.LeadRectD.create(3 * inch, 3 * inch, 1 * inch, 1 * inch);rectObj.stroke = lt.Annotations.Engine.AnnStroke.create(lt.Annotations.Engine.AnnSolidColorBrush.create("blue"), lt.LeadLengthD.create(1));rectObj.fill = lt.Annotations.Engine.AnnSolidColorBrush.create("yellow");container.children.add(rectObj);// Show the containershowContainer("Before save", container);// Create the codecs object to save and load annotationsconst codecs: lt.Annotations.Engine.AnnCodecs = new lt.Annotations.Engine.AnnCodecs();// Save the containerconst xmlData: string = codecs.save(container, lt.Annotations.Engine.AnnFormat.annotations, null, 1);// delete the containercontainer = null;// Show information about the data we just savedconst info: lt.Annotations.Engine.AnnCodecsInfo = codecs.getInfo(xmlData);let message: string;if (info.format == lt.Annotations.Engine.AnnFormat.annotations) {message = "Version: ";message += info.version;message += " No. of pages: ";message += info.pages.length;message += " page nos: ";for (let i = 0; i < info.pages.length; i++) {message += info.pages[i] + " ";}}else {message = "Invalid annotations data";}alert(message);// Load the container we just savedcontainer = codecs.load(xmlData, 1);// Show itshowContainer("After load", container);}}
import { EngineHelper } from "../../utilities/EngineHelper";export class AnnEngine_AnnContainerExample {constructor() {const helper = new EngineHelper();helper.run(this.run);}run = () => {const inch = 720.0;// Create a new annotation container, 8.5 by 11 incheslet container = new lt.Annotations.Engine.AnnContainer();// Size must be in annotation units (1/720 of an inch)container.size = lt.LeadSizeD.create(8.5 * inch, 11 * inch);const showContainer = (message, container) => {let str = message + "\nContainer size: ";// Add the sizeconst inch = 720;const width = container.size.width / inch;const height = container.size.height / inch;str += width + " by " + height + " inches" + "\n";// Add the objectsstr += "Contains " + container.children.count + " objects(s)\n";for (let i = 0; i < container.children.count; i++) {const annObj = container.children.item(i);str += "Object: " + annObj.get_friendlyName() + " at ";for (let j = 0; j < annObj.get_points().get_count(); j++) {const pt = annObj.points.item(j);const x = pt.x / inch;const y = pt.y / inch;str += "(" + x + ", " + y + ") ";}str += "\n";}alert(str);}// Add a red line object, from 1in 1in to 2in 2inconst lineObj = new lt.Annotations.Engine.AnnPolylineObject();lineObj.points.add(lt.LeadPointD.create(1 * inch, 1 * inch));lineObj.points.add(lt.LeadPointD.create(2 * inch, 2 * inch));lineObj.stroke = lt.Annotations.Engine.AnnStroke.create(lt.Annotations.Engine.AnnSolidColorBrush.create("red"), lt.LeadLengthD.create(1));container.children.add(lineObj);// Add a blue on yellow rectangle from 3in 3in to 4in 4inconst rectObj = new lt.Annotations.Engine.AnnRectangleObject();rectObj.rect = lt.LeadRectD.create(3 * inch, 3 * inch, 1 * inch, 1 * inch);rectObj.stroke = lt.Annotations.Engine.AnnStroke.create(lt.Annotations.Engine.AnnSolidColorBrush.create("blue"), lt.LeadLengthD.create(1));rectObj.fill = lt.Annotations.Engine.AnnSolidColorBrush.create("yellow");container.children.add(rectObj);// Show the containershowContainer("Before save", container);// Create the codecs object to save and load annotationsconst codecs = new lt.Annotations.Engine.AnnCodecs();// Save the containerconst xmlData = codecs.save(container, lt.Annotations.Engine.AnnFormat.annotations, null, 1);// delete the containercontainer = null;// Show information about the data we just savedconst info = codecs.getInfo(xmlData);let message;if (info.format == lt.Annotations.Engine.AnnFormat.annotations) {message = "Version: ";message += info.version;message += " No. of pages: ";message += info.pages.length;message += " page nos: ";for (let i = 0; i < info.pages.length; i++) {message += info.pages[i] + " ";}}else {message = "Invalid annotations data";}alert(message);// Load the container we just savedcontainer = codecs.load(xmlData, 1);// Show itshowContainer("After load", container);}}
<!doctype html><html lang="en"><title>AnnContainer Example | AnnContainer</title><head><script src="https://code.jquery.com/jquery-2.2.4.min.js"integrity="sha256-BbhdlvQf/xTY9gja0Dq3HiwQF8LaCRTXxZKRutelT44=" crossorigin="anonymous"></script><script src="../../LT/Leadtools.js"></script><script src="../../LT/Leadtools.Controls.js"></script><script src="../../LT/Leadtools.Annotations.Engine.js"></script><script src="../../LT/Leadtools.Annotations.Designers.js"></script><script src="../../LT/Leadtools.Annotations.Rendering.Javascript.js"></script><script src="../../LT/Leadtools.Annotations.Automation.js"></script><script src="../../LT/Leadtools.Annotations.BatesStamp.js"></script><script src="../../LT/Leadtools.Demos.js"></script><script src="../../LT/Leadtools.Demos.Annotations.js"></script><style>#imageViewerDiv {border: 1px solid #000000;width: 800px;height: 800px;background-color: #7F7F7F;}</style><!-- All demo files are bundled and appended to the window --><script src="../../bundle.js" type="text/javascript"></script></head><body><p>Either Pan/Zoom or Annotations mode. In annotations mode, draw new objects or edit them.</p><div><select id="currentObjectIdSelect"></select></div><div><input type="button" id="exampleButton" value="Example" /><label id="exampleLabel" /></div><div id="imageViewerDiv" /></body><script>window.onload = () => new window.examples.AnnContainer.AnnContainerExample();</script></html>
Help Collections
Raster .NET | C API | C++ Class Library | HTML5 JavaScript
Document .NET | C API | C++ Class Library | HTML5 JavaScript
Medical .NET | C API | C++ Class Library | HTML5 JavaScript
Medical Web Viewer .NET
Multimedia
Direct Show .NET | C API | Filters
Media Foundation .NET | C API | Transforms
Supported Platforms
.NET, Java, Android, and iOS/macOS Assemblies
Imaging, Medical, and Document
C API/C++ Class Libraries
Imaging, Medical, and Document
HTML5 JavaScript Libraries
Imaging, Medical, and Document
