(Leadtools.Annotations.Core)

AnnContainer Class

Show in webframe
Example 





Members 
Represents an annotation container.
Object Model
Syntax
public class AnnContainer 
Public Class AnnContainer 
public sealed class AnnContainer 
@interface LTAnnContainer : NSObject<NSCopying>
public class AnnContainer
function Leadtools.Annotations.Core.AnnContainer()
Remarks

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

Mapper

The object responsible for converting display, container and image coordinates

Children

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

SelectionObject

Special annotation object that is responsible for maintaining a list of the objects that are currently selected in the container

Layers

A collection of AnnLayers used to logically group common annotation objects.

HitTestPoint, HitTestRect and HitTestBehavior

Helper method used to perform hit-testing on the container and return any object under a test point or rectangle

IsVisible, Stroke and Fill

Optional values used when rendering this container: Whether it is visible and the border stroke and interior filling options

IsEnabled

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.

Labels

Optional labels that can be used to overlay fixed text on top of the container, such as map legends

Resources

Additional resources such as images that belong to the container

Resize

Method to easily resize a container to a desired size. Has various options

Example
Copy Code  
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);
}
Requirements

Target Platforms

See Also

Reference

AnnContainer Members
Leadtools.Annotations.Core Namespace
Implementing LEADTOOLS Annotations
Working with Automated Annotations

 

 


Products | Support | Contact Us | Copyright Notices
© 2006-2014 All Rights Reserved. LEAD Technologies, Inc.