The SaveToTag Method supports WPF/Silverlight.
The SaveToTag Method is available in LEADTOOLS Document and Medical Imaging toolkits.
Saves the annotation objects in a container as a TIFF tag data.
Syntax
Example
Visual Basic | Copy 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 |
C# | Copy Code |
---|
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);
} |
SilverlightCSharp | Copy Code |
---|
|
SilverlightVB | Copy Code |
---|
|
Remarks
Requirements
Target Platforms: Silverlight 3.0, Windows XP, Windows Server 2003 family, Windows Server 2008 family, Windows Vista, Windows 7, MAC OS/X (Intel Only)
See Also