'''' This code is part of Document Solutions for PDF .NET demos.'' Copyright (c) MESCIUS inc. All rights reserved.''ImportsSystem.IOImportsSystem.DrawingImportsGrapeCity.Documents.PdfImportsGrapeCity.Documents.TextImportsGrapeCity.Documents.DrawingImports GCDRAW = GrapeCity.Documents.Drawing '' Using image alignment options in DsPdf.'' (This example replaces the older RawImages example; the RawImage class is obsolete and should not be used.)'''' NOTE: When you render an image in DsPdf multiple times (e.g. rendering'' the same image as part of a page header on all pages), it will automatically be'' added to a dictionary and reused throughout the document, provided you use'' the same image object on all pages. So rather than loading the same image from'' file (or stream) each time it is needed, it is always preferable to load the image'' once and cache it in an image object. This applies to all image types used in DsPdf.PublicClassImageAlignmentFunctionCreatePDF(ByVal stream AsStream) AsIntegerDim doc = NewGcPdfDocument() '' Text format used to draw captions:Dim tf = NewTextFormat() With {.Font = StandardFonts.Times, .FontSize = 12} '' Action to draw the image with various alignment options:Dim drawImage As Action(OfGCDRAW.Image, Page, ImageAlign, Boolean) =Sub(ByVal image_, ByVal page_, ByVal ia_, ByVal clip_)Dim rect = NewRectangleF(72, 72, 72 * 4, 72 * 4)Dim clipped = If(clip_, "clipped to a 4""x4"" rectangle", "without clipping")Dim align = If(ia_ IsImageAlign.Default, "ImageAlign.Default",If(ia_ IsImageAlign.CenterImage, "ImageAlign.CenterImage",If(ia_ IsImageAlign.StretchImage, "ImageAlign.StretchImage", "custom ImageAlign")))'' Draw image caption: page_.Graphics.DrawString($"Page {doc.Pages.IndexOf(page_) + 1}: Image drawn at (1"",1""), {clipped}, using {align}:", tf, NewPointF(72, 36))Dim clip AsRectangleF? = If(clip_, rect, NewRectangleF?)'' Draw the image:Dim imageRects AsRectangleF() = Nothing page_.Graphics.DrawImage(image_, rect, clip, ia_, imageRects)'' Show the image outline: page_.Graphics.DrawRectangle(imageRects(0), Color.Red, 1, DirectCast(Nothing, Single()))'' Show image/clip area: page_.Graphics.DrawRectangle(rect, Color.Blue, 1, DirectCast(Nothing, Single()))EndSub '' Create images from JPEG files (using the same Image class instance to draw an image'' in a PDF ensures that the image data will be reused and not duplicated in the PDF):Using img AsGCDRAW.Image = GCDRAW.Image.FromFile(Path.Combine("Resources", "Images", "puffins.jpg")), imgSmall AsGCDRAW.Image = GCDRAW.Image.FromFile(Path.Combine("Resources", "ImagesBis", "puffins-small.jpg")) '' The ImageAlign class provides various image alignment options.'' It also defines a few static instances with some commonly used'' combinations of options demonstrated below. '' Page 1: draw image without clipping, with default alignment: drawImage(img, doc.NewPage(), ImageAlign.Default, False) '' Page 2: draw image with clipping, with default alignment: drawImage(img, doc.NewPage(), ImageAlign.Default, True) '' Page 3: draw image with clipping, with CenterImage alignment: drawImage(img, doc.NewPage(), ImageAlign.CenterImage, True) '' Page 4: draw image without clipping and stretched image: drawImage(img, doc.NewPage(), ImageAlign.StretchImage, False) '' Page 5: draw image without clipping, fit into the rectangle, preserving aspect ratio:Dim ia = NewImageAlign(ImageAlignHorz.Center, ImageAlignVert.Center, True, True, True, False, False) drawImage(img, doc.NewPage(), ia, False) '' Page 6: draw a small image tiled, without clipping, fit into the rectangle, preserving aspect ratio: ia = NewImageAlign(ImageAlignHorz.Left, ImageAlignVert.Top, False, False, True, True, True) drawImage(imgSmall, doc.NewPage(), ia, False)'''' Done: doc.Save(stream)Return doc.Pages.CountEndUsingEndFunctionEndClass