//// This code is part of Document Solutions for PDF .NET demos.// Copyright (c) MESCIUS inc. All rights reserved.//usingSystem.IO;usingSystem.Collections.Generic;usingSystem.Drawing;usingGrapeCity.Documents.Pdf;usingGrapeCity.Documents.Pdf.Annotations; namespaceDsPdfWeb.Demos.Basics{// Shows how to add an ink annotation to a PDF document,// and how to render its content using the InkAnnotation.Paths property.publicclassInkAnnotPaths {publicintCreatePDF(Stream stream) {var doc = newGcPdfDocument();var page = doc.NewPage();// User name for the annotation's author:var user1 = "Jaime Smith"; var rc = Common.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); var inkAnnot = newInkAnnotation() {UserName = user1,Rect = newRectangleF(rc.Left, rc.Bottom + 20, 72 * 5, 72 * 2),LineWidth = 2,Color = Color.DarkBlue,Contents = "This is an ink annotation drawn via InkAnnotation.Paths." };float x0 = 80, x = 80, y = rc.Bottom + 24, h = 18, dx = 2, dy = 4, dx2 = 4, w = 10, xoff = 15; // Scribble 'ink annotation' text: // ivar paths = newList<PointF[]>(); paths.Add(new[] { newPointF(x + w/2, y), newPointF(x + w/2, y + h), newPointF(x + w, y + h*.7f) }); paths.Add(new[] { newPointF(x + w/2 - dx, y - h/3 + dy), newPointF(x + w/2 + dx, y - h/3) });// n x += xoff; paths.Add(new[] { newPointF(x, y), newPointF(x, y + h), newPointF(x, y + h - dy), newPointF(x + w*0.7f, y),newPointF(x + w - dx/2, y + h*.6f), newPointF(x + w, y + h), newPointF(x + w + dx2, y + h*.7f) });// k x += xoff; paths.Add(new[] { newPointF(x, y - h/3), newPointF(x, y + h) }); paths.Add(new[] { newPointF(x + w, y), newPointF(x + dx, y + h/2 - dy), newPointF(x, y + h/2),newPointF(x + dx2, y + h/2 + dy), newPointF(x + w, y + h), newPointF(x + w + dx2, y + h*.7f) }); // a x += xoff * 2; paths.Add(new[] { newPointF(x + w, y + dy), newPointF(x + w/2, y), newPointF(x, y + h/2), newPointF(x + w/2, y + h),newPointF(x + w, y + dy), newPointF(x + w, y), newPointF(x + w, y + h), newPointF(x + w + dx2, y + h*.7f) });// n x += xoff; paths.Add(new[] { newPointF(x, y), newPointF(x, y + h), newPointF(x, y + h - dy), newPointF(x + w*0.7f, y),newPointF(x + w - dx/2, y + h*.6f), newPointF(x + w, y + h), newPointF(x + w + dx2, y + h*.7f) });// n x += xoff; paths.Add(new[] { newPointF(x, y), newPointF(x, y + h), newPointF(x, y + h - dy), newPointF(x + w*0.7f, y),newPointF(x + w - dx/2, y + h*.6f), newPointF(x + w, y + h), newPointF(x + w + dx2, y + h*.7f) });// o x += xoff; paths.Add(new[] { newPointF(x + w/2, y), newPointF(x + w/2 - dx, y), newPointF(x, y + h/2), newPointF(x + w/2, y + h),newPointF(x + w, y + h/2), newPointF(x + w/2 + dx, y), newPointF(x + w/2, y) });// t x += xoff; paths.Add(new[] { newPointF(x + w/2, y - h/3), newPointF(x + w/2, y + h), newPointF(x + w, y + h*.7f) }); paths.Add(new[] { newPointF(x, y), newPointF(x + w, y) });// a x += xoff; paths.Add(new[] { newPointF(x + w, y + dy), newPointF(x + w/2, y), newPointF(x, y + h/2), newPointF(x + w/2, y + h),newPointF(x + w, y + dy), newPointF(x + w, y), newPointF(x + w, y + h), newPointF(x + w + dx2, y + h*.7f) });// t x += xoff; paths.Add(new[] { newPointF(x + w/2, y - h/3), newPointF(x + w/2, y + h), newPointF(x + w, y + h*.7f) }); paths.Add(new[] { newPointF(x, y), newPointF(x + w, y) });// i x += xoff; paths.Add(new[] { newPointF(x + w/2, y), newPointF(x + w/2, y + h), newPointF(x + w, y + h*.7f) }); paths.Add(new[] { newPointF(x + w/2 - dx, y - h/3 + dy), newPointF(x + w/2 + dx, y - h/3) });// o x += xoff; paths.Add(new[] { newPointF(x + w/2, y), newPointF(x + w/2 - dx, y), newPointF(x, y + h/2),newPointF(x + w/2, y + h), newPointF(x + w, y + h/2), newPointF(x + w/2 + dx, y), newPointF(x + w/2, y) });// n x += xoff; paths.Add(new[] { newPointF(x, y), newPointF(x, y + h), newPointF(x, y + h - dy), newPointF(x + w*0.7f, y),newPointF(x + w - dx/2, y + h*.6f), newPointF(x + w, y + h), newPointF(x + w + dx2, y + h*.7f),newPointF(x + w*3, y + h*.4f), newPointF(x + w + dx2, y + h + dy*2), newPointF(x0, y + h + dy)} ); inkAnnot.Paths = paths; page.Annotations.Add(inkAnnot); // Done: doc.Save(stream);return doc.Pages.Count; } }}