ImageTransparency.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.Text
Imports GrapeCity.Documents.Drawing
Imports GCTEXT = GrapeCity.Documents.Text
Imports GCDRAW = GrapeCity.Documents.Drawing

'' This sample demonstrates the ability of DsPdf to render
'' images Imports a specified transparency (opacity).
Public Class ImageTransparency
    Function CreatePDF(ByVal stream As Stream) As Integer
        Dim doc = New GcPdfDocument()
        Dim page = doc.NewPage()
        Dim g = page.Graphics

        Dim rc = Util.AddNote(
            "GcPdfGraphics.DrawImage() method allows rendering images with a specified opacity. " +
            "Below is a random text with an image drawn on top of it using opacity 0.2 (almost transparent), " +
            "0.5 (medium transparency) and 1 (non-transparent).",
            page)

        Dim tl = g.CreateTextLayout()
        tl.DefaultFormat.Font = StandardFonts.Times
        tl.DefaultFormat.FontSize = 12
        tl.MaxWidth = page.Size.Width
        tl.MaxHeight = page.Size.Height
        tl.MarginAll = 36
        tl.MarginTop += rc.Bottom
        tl.Append(Util.LoremIpsum(2))
        tl.PerformLayout(True)
        g.DrawTextLayout(tl, PointF.Empty)

        Using img As GCDRAW.Image = GCDRAW.Image.FromFile(Path.Combine("Resources", "Images", "puffins.jpg"))
            Dim imageRc = New RectangleF(tl.MarginLeft, tl.MarginTop, 144, 144)
            '' Opacity 0.2:
            g.DrawImage(img, imageRc, Nothing, ImageAlign.ScaleImage, 0.2F)
            imageRc.Offset(imageRc.Width + 36, 0)
            '' Opacity 0.5:
            g.DrawImage(img, imageRc, Nothing, ImageAlign.ScaleImage, 0.5F)
            imageRc.Offset(imageRc.Width + 36, 0)
            '' Opacity 1 (default):
            g.DrawImage(img, imageRc, Nothing, ImageAlign.ScaleImage)

            '' NOTE: we must save document BEFORE disposing the image(s) used in it:
            doc.Save(stream)
        End Using
        Return doc.Pages.Count
    End Function
End Class