LEADTOOLS Annotations for WPF and Silverlight (Leadtools.Windows.Annotations assembly)
LEAD Technologies, Inc

SaveToTag Method

Example 





The AnnContainer containing the objects to be saved.
An AnnCodecsTagFormat value that specifies the format used when creating the tag data.
Saves the annotation objects in a container as a TIFF tag data. .NET support
Syntax
public byte[] SaveToTag( 
   AnnContainer container,
   AnnCodecsTagFormat format
)
'Declaration
 
Public Function SaveToTag( _
   ByVal container As AnnContainer, _
   ByVal format As AnnCodecsTagFormat _
) As Byte()
'Usage
 
Dim instance As AnnCodecs
Dim container As AnnContainer
Dim format As AnnCodecsTagFormat
Dim value() As Byte
 
value = instance.SaveToTag(container, format)
public byte[] SaveToTag( 
   AnnContainer container,
   AnnCodecsTagFormat format
)
 function Leadtools.Windows.Annotations.AnnCodecs.SaveToTag( 
   container ,
   format 
)
public:
array<byte>^ SaveToTag( 
   AnnContainer^ container,
   AnnCodecsTagFormat format
) 

Parameters

container
The AnnContainer containing the objects to be saved.
format
An AnnCodecsTagFormat value that specifies the format used when creating the tag data.

Return Value

A byte array that can be saved into a TIFF file using System.Windows.Media.Imaging.BitmapMetadata.SetQuery(System.String,System.Object) method.
Remarks

This method will return byte array that can be saved to Tiff file using System.Windows.Media.Imaging.BitmapMetadata.SetQuery(System.String,System.Object) method passing the query '/ifd/{uint=32932}'.

This method can return null (Nothing in Visual Basic) if you try to save unsupported objects to certain formats (for example, if you try to save an AnnRubberStampObject to a Wang format).

For more information, refer to WPF Annotation Files.

Example
Copy CodeCopy Code  
Public Sub AnnCodecs_SaveToTag(ByVal viewer As ImageViewer, ByVal tifFileName As String)
   ' first create a container and add a few objects
   Dim container As AnnContainer = New AnnContainer()
   container.Width = 400
   container.Height = 400
   Dim lineObj As AnnLineObject = New AnnLineObject()
   lineObj.Start = New Point(100, 100)
   lineObj.End = New Point(200, 200)
   lineObj.Stroke = Colors.Red
   lineObj.StrokeThickness = 1.0
   container.Children.Add(lineObj)

   Dim rectObj As AnnRectangleObject = New AnnRectangleObject()
   rectObj.Rect = New Rect(100, 100, 200, 200)
   rectObj.Stroke = Colors.Red
   rectObj.StrokeThickness = 1.0
   rectObj.Fill = Colors.White
   container.Children.Add(rectObj)

   ' create a new instance of the AnnCodecs object
   Dim ann As AnnCodecs = New AnnCodecs()

   ' save this container as a TIFF tag
   Dim tagData As Byte() = ann.SaveToTag(container, AnnCodecsTagFormat.Serialize)

   If Not tagData Is Nothing Then
      Dim fs1 As FileStream = New FileStream(tifFileName, FileMode.Open, FileAccess.ReadWrite, FileShare.ReadWrite)
      Dim bmd As BitmapMetadata = New BitmapMetadata("tiff")
      bmd.SetQuery("/ifd/{uint=32932}", tagData)
      Dim bf1 As BitmapFrame = BitmapFrame.Create(DirectCast(viewer.Source, BitmapSource), Nothing, bmd, Nothing)

      Dim tiffEncoder As TiffBitmapEncoder = New TiffBitmapEncoder()
      tiffEncoder.Frames.Add(bf1)
      tiffEncoder.Save(fs1)

      fs1.Close()
   End If

   ' clear the container and the tag
   container.Children.Clear()
   tagData = Nothing

   ' re-load the tag
   Dim fs As FileStream = New FileStream(tifFileName, FileMode.Open)
   Dim bf As BitmapFrame = BitmapFrame.Create(fs)
   Dim tiffInplace As InPlaceBitmapMetadataWriter = Nothing
   Try
      tiffInplace = bf.CreateInPlaceBitmapMetadataWriter()
   Catch
   Finally
      If Not tiffInplace Is Nothing AndAlso tiffInplace.ContainsQuery("/ifd/{uint=32932}") Then
         tagData = CType(tiffInplace.GetQuery("/ifd/{uint=32932}"), Byte())
      End If
      fs.Close()
   End Try

   ' load the container
   ann.LoadFromTag(tagData, container)
End Sub
public void AnnCodecs_SaveToTag(ImageViewer viewer, string tifFileName)
{
   // first create a container and add a few objects
   AnnContainer container = new AnnContainer();
   container.Width = 400;
   container.Height = 400;
   AnnLineObject lineObj = new AnnLineObject();
   lineObj.Start = new Point(100, 100);
   lineObj.End = new Point(200, 200); 
   lineObj.Stroke = Colors.Red;
   lineObj.StrokeThickness = 1.0;
   container.Children.Add(lineObj);

   AnnRectangleObject rectObj = new AnnRectangleObject();

   rectObj.Rect = new Rect(100, 100, 200,200);
   rectObj.Stroke = Colors.Red;
   rectObj.Fill = Colors.White;

   rectObj.StrokeThickness = 1.0;
   container.Children.Add(rectObj);

   // create a new instance of the AnnCodecs object
   AnnCodecs ann = new AnnCodecs();

   // save this container as a TIFF tag
   byte[] tagData = ann.SaveToTag(container, AnnCodecsTagFormat.Serialize);

   if(tagData != null)
   {
      FileStream fs = new FileStream(tifFileName, FileMode.Open, FileAccess.ReadWrite, FileShare.ReadWrite);
      BitmapMetadata bmd = new BitmapMetadata("tiff");
      bmd.SetQuery("/ifd/{uint=32932}", tagData);
      BitmapFrame bf = BitmapFrame.Create(viewer.Source as BitmapSource, null, bmd, null);

      TiffBitmapEncoder tiffEncoder = new TiffBitmapEncoder();
      tiffEncoder.Frames.Add(bf);
      tiffEncoder.Save(fs);

      fs.Close();
   }

   // clear the container and the tag
   container.Children.Clear();
   tagData = null;

   // re-load the tag
   {
      FileStream fs = new FileStream(tifFileName, FileMode.Open);
      BitmapFrame bf = BitmapFrame.Create(fs);
      InPlaceBitmapMetadataWriter tiffInplace = null;
      try
      {
         tiffInplace = bf.CreateInPlaceBitmapMetadataWriter();
      }
      catch
      {
      }
      finally
      {
         if(tiffInplace != null && tiffInplace.ContainsQuery("/ifd/{uint=32932}"))
         {
            tagData = (byte[])tiffInplace.GetQuery("/ifd/{uint=32932}");
         }
         fs.Close();
      }
   }

   // load the container
   ann.LoadFromTag(tagData, container);
}
Requirements

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

See Also

Reference

AnnCodecs Class
AnnCodecs Members

 

 


Products | Support | Contact Us | Copyright Notices

© 2006-2012 All Rights Reserved. LEAD Technologies, Inc.