InkAnnotPaths.vb
- ''
- '' This code is part of Document Solutions for PDF demos.
- '' Copyright (c) MESCIUS inc. All rights reserved.
- ''
- Imports System.IO
- Imports System.Drawing
- Imports GrapeCity.Documents.Pdf
- Imports GrapeCity.Documents.Pdf.Annotations
- Imports GrapeCity.Documents.Text
- Imports GrapeCity.Documents.Drawing
-
- '' Shows how to add an ink annotation to a PDF document,
- '' and how to render its content using the InkAnnotation.Paths property.
- Public Class InkAnnotPaths
- Function CreatePDF(ByVal stream As Stream) As Integer
- Dim doc = New GcPdfDocument()
- Dim page = doc.NewPage()
- '' User name for the annotation's author:
- Dim user1 = "Jaime Smith"
-
- Dim rc = Util.AddNote(
- "This sample creates an ink annotation and shows how to use the InkAnnotation.Paths property " +
- "to render the annotation's content. The content is specified by discrete points that should be " +
- "connected when a PDF viewer renders them. The points can be connected either by straight or " +
- "curved lines depending on the viewer implementation.",
- page)
-
- Dim inkAnnot = New InkAnnotation() With
- {
- .UserName = user1,
- .Rect = New RectangleF(rc.Left, rc.Bottom + 20, 72 * 5, 72 * 2),
- .LineWidth = 2,
- .Color = Color.DarkBlue,
- .Contents = "This is an ink annotation drawn via InkAnnotation.Paths."
- }
- Dim x0 = 80, x = 80, y = rc.Bottom + 24, h = 18, dx = 2, dy = 4, dx2 = 4, w = 10, xoff = 15
-
- '' Scribble 'ink annotation' text:
-
- '' i
- Dim paths As List(Of PointF()) = New List(Of PointF())
- paths.Add({New PointF(x + w / 2, y), New PointF(x + w / 2, y + h), New PointF(x + w, y + h * 0.7F)})
- paths.Add({New PointF(x + w / 2 - dx, y - h / 3 + dy), New PointF(x + w / 2 + dx, y - h / 3)})
- '' n
- x += xoff
- paths.Add({New PointF(x, y), New PointF(x, y + h), New PointF(x, y + h - dy), New PointF(x + w * 0.7F, y),
- New PointF(x + w - dx / 2, y + h * 0.6F), New PointF(x + w, y + h), New PointF(x + w + dx2, y + h * 0.7F)})
- '' k
- x += xoff
- paths.Add({New PointF(x, y - h / 3), New PointF(x, y + h)})
- paths.Add({New PointF(x + w, y), New PointF(x + dx, y + h / 2 - dy), New PointF(x, y + h / 2),
- New PointF(x + dx2, y + h / 2 + dy), New PointF(x + w, y + h), New PointF(x + w + dx2, y + h * 0.7F)})
-
- '' a
- x += xoff * 2
- paths.Add({New PointF(x + w, y + dy), New PointF(x + w / 2, y), New PointF(x, y + h / 2), New PointF(x + w / 2, y + h),
- New PointF(x + w, y + dy), New PointF(x + w, y), New PointF(x + w, y + h), New PointF(x + w + dx2, y + h * 0.7F)})
- '' n
- x += xoff
- paths.Add({New PointF(x, y), New PointF(x, y + h), New PointF(x, y + h - dy), New PointF(x + w * 0.7F, y),
- New PointF(x + w - dx / 2, y + h * 0.6F), New PointF(x + w, y + h), New PointF(x + w + dx2, y + h * 0.7F)})
- '' n
- x += xoff
- paths.Add({New PointF(x, y), New PointF(x, y + h), New PointF(x, y + h - dy), New PointF(x + w * 0.7F, y),
- New PointF(x + w - dx / 2, y + h * 0.6F), New PointF(x + w, y + h), New PointF(x + w + dx2, y + h * 0.7F)})
- '' o
- x += xoff
- paths.Add({New PointF(x + w / 2, y), New PointF(x + w / 2 - dx, y), New PointF(x, y + h / 2), New PointF(x + w / 2, y + h),
- New PointF(x + w, y + h / 2), New PointF(x + w / 2 + dx, y), New PointF(x + w / 2, y)})
- '' t
- x += xoff
- paths.Add({New PointF(x + w / 2, y - h / 3), New PointF(x + w / 2, y + h), New PointF(x + w, y + h * 0.7F)})
- paths.Add({New PointF(x, y), New PointF(x + w, y)})
- '' a
- x += xoff
- paths.Add({New PointF(x + w, y + dy), New PointF(x + w / 2, y), New PointF(x, y + h / 2), New PointF(x + w / 2, y + h),
- New PointF(x + w, y + dy), New PointF(x + w, y), New PointF(x + w, y + h), New PointF(x + w + dx2, y + h * 0.7F)})
- '' t
- x += xoff
- paths.Add({New PointF(x + w / 2, y - h / 3), New PointF(x + w / 2, y + h), New PointF(x + w, y + h * 0.7F)})
- paths.Add({New PointF(x, y), New PointF(x + w, y)})
- '' i
- x += xoff
- paths.Add({New PointF(x + w / 2, y), New PointF(x + w / 2, y + h), New PointF(x + w, y + h * 0.7F)})
- paths.Add({New PointF(x + w / 2 - dx, y - h / 3 + dy), New PointF(x + w / 2 + dx, y - h / 3)})
- '' o
- x += xoff
- paths.Add({New PointF(x + w / 2, y), New PointF(x + w / 2 - dx, y), New PointF(x, y + h / 2),
- New PointF(x + w / 2, y + h), New PointF(x + w, y + h / 2), New PointF(x + w / 2 + dx, y), New PointF(x + w / 2, y)})
- '' n
- x += xoff
- paths.Add({New PointF(x, y), New PointF(x, y + h), New PointF(x, y + h - dy), New PointF(x + w * 0.7F, y),
- New PointF(x + w - dx / 2, y + h * 0.6F), New PointF(x + w, y + h), New PointF(x + w + dx2, y + h * 0.7F),
- New PointF(x + w * 3, y + h * 0.4F), New PointF(x + w + dx2, y + h + dy * 2), New PointF(x0, y + h + dy)})
- inkAnnot.Paths = paths
-
- page.Annotations.Add(inkAnnot)
-
- '' Done:
- doc.Save(stream)
- Return doc.Pages.Count
- End Function
- End Class
-