PushClip.vb
- ''
- '' This code is part of Document Solutions for Imaging demos.
- '' Copyright (c) MESCIUS inc. All rights reserved.
- ''
- Imports System.IO
- Imports System.Drawing
- Imports GrapeCity.Documents.Drawing
- Imports GrapeCity.Documents.Text
- Imports GrapeCity.Documents.Imaging
- Imports GCTEXT = GrapeCity.Documents.Text
- Imports GCDRAW = GrapeCity.Documents.Drawing
-
- '' This sample demonstrates how to use GcGraphics.PushClip/PopClip
- '' methods to specify clipping.
- Public Class PushClip
- Function GenerateImage(
- ByVal pixelSize As Size,
- ByVal dpi As Single,
- ByVal opaque As Boolean,
- Optional ByVal sampleParams As String() = Nothing) As GcBitmap
-
- Dim backColor = Color.FromArgb(&HFF0066CC)
- Dim foreColor = Color.FromArgb(&HFFFFCC00)
- Dim bmp = New GcBitmap(pixelSize.Width, pixelSize.Height, True, dpi, dpi)
- Dim cw = 400, ch = 300, pad = 10, bord = 4
- Dim clipRc = New RectangleF(pixelSize.Width - cw - pad, pad, cw, ch)
- Using g = bmp.CreateGraphics(backColor)
- '' We create a path consisting of two nested rectangles,
- '' outer for the whole bitmap, inner for a text box.
- '' We then use that path to create a clip region And
- '' draw an image covering the whole bitmap but excluding
- '' the text box
- Using gpath = g.CreatePath()
- gpath.BeginFigure(PointF.Empty)
- gpath.AddLine(New PointF(pixelSize.Width, 0))
- gpath.AddLine(New PointF(pixelSize.Width, pixelSize.Height))
- gpath.AddLine(New PointF(0, pixelSize.Height))
- gpath.EndFigure(FigureEnd.Closed)
- gpath.BeginFigure(New PointF(clipRc.Left, clipRc.Top))
- gpath.AddLine(New PointF(clipRc.Right, clipRc.Top))
- gpath.AddLine(New PointF(clipRc.Right, clipRc.Bottom))
- gpath.AddLine(New PointF(clipRc.Left, clipRc.Bottom))
- gpath.EndFigure(FigureEnd.Closed)
- Using cliprgn = g.CreateClipRegion(gpath)
- Using img = GCDRAW.Image.FromFile(Path.Combine("Resources", "ImagesBis", "clivia.jpg"))
- g.PushClip(cliprgn)
- g.DrawImage(
- img,
- New RectangleF(0, 0, pixelSize.Width, pixelSize.Height),
- Nothing,
- ImageAlign.StretchImage)
- g.PopClip(cliprgn)
- End Using
- End Using
- End Using
- '' We now draw some text inside the text box,
- '' clipping to it (this overload of PushClip
- '' returns an IDisposable that removes the clipping
- '' when disposed)
- Using (g.PushClip(clipRc))
- g.DrawString(
- Util.LoremIpsum(),
- New TextFormat() With
- {
- .Font = GCTEXT.Font.FromFile(Path.Combine("Resources", "Fonts", "times.ttf")),
- .FontSize = 16,
- .ForeColor = foreColor
- },
- clipRc
- )
- End Using
- '' Draw a border around the whole image,
- '' demonstrating that the clip has been removed:
- g.DrawRectangle(
- New RectangleF(bord / 2, bord / 2, pixelSize.Width - bord, pixelSize.Height - bord),
- New GCDRAW.Pen(foreColor, bord))
- End Using
- '' Done
- Return bmp
- End Function
- End Class
-