Table of Contents

Class DrawingCanvas

Namespace
SixLabors.ImageSharp.Drawing.Processing
Assembly
SixLabors.ImageSharp.Drawing.dll

Represents a stateful, retained-mode drawing canvas over a frame target.

public abstract class DrawingCanvas : IDisposable
Inheritance
DrawingCanvas
Implements
Derived
Inherited Members

Remarks

Draw calls are recorded into an ordered command stream rather than rasterized immediately; the root canvas replays the recorded timeline when it is disposed. Drawing state (options, transform, clip and layer scope) is managed through the Save()/Restore() state stack.

Properties

Bounds

Gets the local bounds of this canvas.

public abstract Rectangle Bounds { get; }

Property Value

Rectangle

SaveCount

Gets the number of saved states currently on the canvas stack.

public abstract int SaveCount { get; }

Property Value

int

Methods

Apply(IPath, Action<IImageProcessingContext>)

Applies an image-processing operation to a path region.

public abstract void Apply(IPath path, Action<IImageProcessingContext> operation)

Parameters

path IPath

The path region to process.

operation Action<IImageProcessingContext>

The image-processing operation to apply to the region.

Remarks

The operation affects only pixels covered by the supplied path.

Apply(IPath, Action<IImageProcessingContext>, GraphicsOptions, Point)

Applies an image-processing operation to a path region and composites the processed pixels back with explicit options, optionally offset from where they were read.

public abstract void Apply(IPath path, Action<IImageProcessingContext> operation, GraphicsOptions writeBackOptions, Point writeBackOffset)

Parameters

path IPath

The path region to process.

operation Action<IImageProcessingContext>

The image-processing operation to apply to the region.

writeBackOptions GraphicsOptions

The graphics options used to composite the processed pixels back.

writeBackOffset Point

The offset at which the processed pixels are written back.

Remarks

The write-back affects only pixels covered by the supplied path translated by the offset.

Apply(PathBuilder, Action<IImageProcessingContext>)

Applies an image-processing operation to a region described by a path builder.

public abstract void Apply(PathBuilder pathBuilder, Action<IImageProcessingContext> operation)

Parameters

pathBuilder PathBuilder

The path builder describing the region to process.

operation Action<IImageProcessingContext>

The image-processing operation to apply to the region.

Apply(Rectangle, Action<IImageProcessingContext>)

Applies an image-processing operation to a local region.

public abstract void Apply(Rectangle region, Action<IImageProcessingContext> operation)

Parameters

region Rectangle

The local region to process.

operation Action<IImageProcessingContext>

The image-processing operation to apply to the region.

Apply(Rectangle, Action<IImageProcessingContext>, GraphicsOptions, Point)

Applies an image-processing operation to a local region and composites the processed pixels back with explicit options, optionally offset from where they were read. The target region is untouched while the operation runs, so the processed pixels can be blended against the original content; for example a drop shadow composites the tinted, blurred region back beneath the content with DestOver at the shadow offset.

public abstract void Apply(Rectangle region, Action<IImageProcessingContext> operation, GraphicsOptions writeBackOptions, Point writeBackOffset)

Parameters

region Rectangle

The local region to process.

operation Action<IImageProcessingContext>

The image-processing operation to apply to the region.

writeBackOptions GraphicsOptions

The graphics options used to composite the processed pixels back.

writeBackOffset Point

The offset at which the processed pixels are written back.

Clear(Brush)

Clears the whole canvas with the given brush using replacement composition: the brush output overwrites the covered pixels outright, including their alpha, rather than blending over them.

public void Clear(Brush brush)

Parameters

brush Brush

Brush used to shade the destination pixels.

Clear(Brush, IPath)

Fills a path region with the given brush using replacement composition: the brush output overwrites the covered pixels outright, including their alpha, rather than blending over them.

public abstract void Clear(Brush brush, IPath path)

Parameters

brush Brush

Brush used to shade destination pixels during the clear.

path IPath

The path region to clear.

Clear(Brush, Rectangle)

Clears a local region with the given brush using replacement composition: the brush output overwrites the covered pixels outright, including their alpha, rather than blending over them.

public void Clear(Brush brush, Rectangle region)

Parameters

brush Brush

Brush used to shade the destination pixels.

region Rectangle

Region to clear in local coordinates.

Clip(ClipOperation, params IPath[])

Narrows the current clip region by applying the specified clipping operation with the supplied clip paths.

public abstract void Clip(ClipOperation operation, params IPath[] clipPaths)

Parameters

operation ClipOperation

The operation to apply to the current clip.

clipPaths IPath[]

The clip paths to combine with the current clip, in local coordinates.

Remarks

The clip paths are transformed by the active transform at the point this is called.

Clip(params IPath[])

Narrows the current clip region by intersecting it with the supplied clip paths.

public abstract void Clip(params IPath[] clipPaths)

Parameters

clipPaths IPath[]

The clip paths to intersect with the current clip, in local coordinates.

Remarks

The clip paths are transformed by the active transform at the point this is called, then intersected with the existing clip; clipping only ever narrows. The resulting clip is part of the current saved state and is restored by Restore(). Multiple paths combine as a union before intersecting (e.g. a region built from several rectangles).

CopyPixelsFrom(DrawingCanvas, Rectangle, Point)

Copies pixels from another canvas into this canvas.

public abstract void CopyPixelsFrom(DrawingCanvas source, Rectangle sourceRectangle, Point targetPoint)

Parameters

source DrawingCanvas

The source canvas.

sourceRectangle Rectangle

The source rectangle in source-local coordinates.

targetPoint Point

The target point in this canvas' local coordinates.

Remarks

Any queued commands on both canvases are applied before the copy.

CreateRegion(Rectangle)

Creates a child canvas over a subregion in local coordinates.

public abstract DrawingCanvas CreateRegion(Rectangle region)

Parameters

region Rectangle

The child region in local coordinates.

Returns

DrawingCanvas

A child canvas with local origin at (0,0).

CreateScene()

Seals the commands recorded so far into a retained backend scene and clears them from the canvas queue.

public abstract DrawingBackendScene CreateScene()

Returns

DrawingBackendScene

The created backend scene.

Remarks

The active clip range is closed before the scene is built and reopened afterwards, so this acts as an ordering boundary in the recorded timeline. Image resources retained for the sealed commands are transferred to the returned scene, which owns and disposes them.

Dispose()

Releases the canvas. Disposing the root canvas closes any open layers and clips and replays the recorded command timeline into the target frame; child region canvases share the root's command stream and do not flush on disposal.

public abstract void Dispose()

Remarks

The root canvas also releases image resources retained for deferred draws and, when it owns the text drawing cache, clears that cache. Disposal is idempotent.

Draw(Pen, IPath)

Draws a path outline in local coordinates using the given pen.

public abstract void Draw(Pen pen, IPath path)

Parameters

pen Pen

Pen used to generate the outline fill path.

path IPath

The path to stroke.

Draw(Pen, IPathCollection)

Draws all paths in a collection using the provided pen.

public void Draw(Pen pen, IPathCollection paths)

Parameters

pen Pen

Pen used to generate outlines.

paths IPathCollection

Path collection to stroke.

Draw(Pen, PathBuilder)

Draws a path outline built by the provided builder using the given pen.

public void Draw(Pen pen, PathBuilder pathBuilder)

Parameters

pen Pen

Pen used to generate the outline fill path.

pathBuilder PathBuilder

The path builder describing the path to stroke.

Draw(Pen, Rectangle)

Draws a rectangular outline using the provided pen.

public void Draw(Pen pen, Rectangle region)

Parameters

pen Pen

Pen used to generate the rectangle outline.

region Rectangle

Rectangle region to stroke.

DrawArc(Pen, PointF, SizeF, float, float, float)

Draws an arc outline using the provided pen.

public void DrawArc(Pen pen, PointF center, SizeF radius, float rotation, float startAngle, float sweepAngle)

Parameters

pen Pen

Pen used to generate the arc outline.

center PointF

Arc center point in local coordinates.

radius SizeF

Arc radii in local coordinates.

rotation float

Ellipse rotation in degrees.

startAngle float

Arc start angle in degrees.

sweepAngle float

Arc sweep angle in degrees.

DrawBezier(Pen, params PointF[])

Draws a cubic bezier outline using the provided pen.

public void DrawBezier(Pen pen, params PointF[] points)

Parameters

pen Pen

Pen used to generate the bezier outline.

points PointF[]

Bezier control points.

DrawEllipse(Pen, PointF, SizeF)

Draws an ellipse outline using the provided pen.

public void DrawEllipse(Pen pen, PointF center, SizeF size)

Parameters

pen Pen

Pen used to generate the ellipse outline.

center PointF

Ellipse center point in local coordinates.

size SizeF

Ellipse width and height in local coordinates.

DrawGlyphs(Brush, Pen, IEnumerable<GlyphPathCollection>)

Draws layered glyph geometry.

public abstract void DrawGlyphs(Brush brush, Pen pen, IEnumerable<GlyphPathCollection> glyphs)

Parameters

brush Brush

Brush used to fill glyph layers.

pen Pen

Pen used to outline dominant painted layers.

glyphs IEnumerable<GlyphPathCollection>

Layered glyph geometry to draw.

DrawImage(Image, Rectangle, RectangleF, WrapMode, WrapMode, IResampler?)

Draws an image source region into a destination rectangle, tiling the painted area by repeating the destination rectangle outwards per the supplied WrapModes.

public abstract void DrawImage(Image image, Rectangle sourceRect, RectangleF destinationRect, WrapMode wrapX, WrapMode wrapY, IResampler? sampler = null)

Parameters

image Image

The source image.

sourceRect Rectangle

The source rectangle within image.

destinationRect RectangleF

The destination rectangle in local canvas coordinates (defines a single tile cell).

wrapX WrapMode

The horizontal wrap mode applied when sampling beyond destinationRect.

wrapY WrapMode

The vertical wrap mode applied when sampling beyond destinationRect.

sampler IResampler

Optional resampler used when scaling or transforming the image. Defaults to Bicubic.

DrawImage(Image, Rectangle, RectangleF, IResampler?)

Draws an image source region into a destination rectangle.

public abstract void DrawImage(Image image, Rectangle sourceRect, RectangleF destinationRect, IResampler? sampler = null)

Parameters

image Image

The source image.

sourceRect Rectangle

The source rectangle within image.

destinationRect RectangleF

The destination rectangle in local canvas coordinates.

sampler IResampler

Optional resampler used when scaling or transforming the image. Defaults to Bicubic.

DrawLine(Pen, params PointF[])

Draws a polyline outline using the provided pen and drawing options.

public abstract void DrawLine(Pen pen, params PointF[] points)

Parameters

pen Pen

Pen used to generate the line outline.

points PointF[]

Polyline points.

DrawPie(Pen, PointF, SizeF, float, float)

Draws a pie sector outline using the provided pen.

public void DrawPie(Pen pen, PointF center, SizeF radius, float startAngle, float sweepAngle)

Parameters

pen Pen

Pen used to generate the pie outline.

center PointF

The center point of the pie sector in local coordinates.

radius SizeF

The x and y radii of the pie sector in local coordinates.

startAngle float

The start angle of the pie sector in degrees.

sweepAngle float

The sweep angle of the pie sector in degrees.

DrawPie(Pen, PointF, SizeF, float, float, float)

Draws a pie sector outline using the provided pen.

public void DrawPie(Pen pen, PointF center, SizeF radius, float rotation, float startAngle, float sweepAngle)

Parameters

pen Pen

Pen used to generate the pie outline.

center PointF

The center point of the pie sector in local coordinates.

radius SizeF

The x and y radii of the pie sector in local coordinates.

rotation float

Ellipse rotation in degrees.

startAngle float

The start angle of the pie sector in degrees.

sweepAngle float

The sweep angle of the pie sector in degrees.

DrawText(LineLayout, IPath, Brush?, Pen?)

Draws one prepared line layout along a path baseline onto this canvas.

public abstract void DrawText(LineLayout lineLayout, IPath path, Brush? brush, Pen? pen)

Parameters

lineLayout LineLayout

The prepared line layout to draw.

path IPath

The path used as the text baseline in local canvas coordinates.

brush Brush

Optional brush used to fill glyphs.

pen Pen

Optional pen used to outline glyphs.

DrawText(LineLayout, PointF, Brush?, Pen?)

Draws one prepared line layout onto this canvas.

public abstract void DrawText(LineLayout lineLayout, PointF location, Brush? brush, Pen? pen)

Parameters

lineLayout LineLayout

The prepared line layout to draw.

location PointF

The drawing location in local canvas coordinates.

brush Brush

Optional brush used to fill glyphs.

pen Pen

Optional pen used to outline glyphs.

DrawText(TextBlock, IPath, float, Brush?, Pen?)

Draws a prepared text block along a path baseline onto this canvas.

public abstract void DrawText(TextBlock textBlock, IPath path, float wrappingLength, Brush? brush, Pen? pen)

Parameters

textBlock TextBlock

The prepared text block to draw.

path IPath

The path used as the text baseline in local canvas coordinates.

wrappingLength float

The wrapping length in pixels. Use -1 to disable wrapping.

brush Brush

Optional brush used to fill glyphs.

pen Pen

Optional pen used to outline glyphs.

DrawText(TextBlock, PointF, float, Brush?, Pen?)

Draws a prepared text block onto this canvas.

public abstract void DrawText(TextBlock textBlock, PointF location, float wrappingLength, Brush? brush, Pen? pen)

Parameters

textBlock TextBlock

The prepared text block to draw.

location PointF

The drawing location in local canvas coordinates.

wrappingLength float

The wrapping length in pixels. Use -1 to disable wrapping.

brush Brush

Optional brush used to fill glyphs.

pen Pen

Optional pen used to outline glyphs.

DrawText(RichTextOptions, ReadOnlySpan<char>, IPath, Brush?, Pen?)

Draws text along a path baseline onto this canvas.

public abstract void DrawText(RichTextOptions textOptions, ReadOnlySpan<char> text, IPath path, Brush? brush, Pen? pen)

Parameters

textOptions RichTextOptions

The text rendering options.

text ReadOnlySpan<char>

The text to draw.

path IPath

The path used as the text baseline in local canvas coordinates.

brush Brush

Optional brush used to fill glyphs.

pen Pen

Optional pen used to outline glyphs.

DrawText(RichTextOptions, ReadOnlySpan<char>, Brush?, Pen?)

Draws text onto this canvas.

public abstract void DrawText(RichTextOptions textOptions, ReadOnlySpan<char> text, Brush? brush, Pen? pen)

Parameters

textOptions RichTextOptions

The text rendering options.

text ReadOnlySpan<char>

The text to draw.

brush Brush

Optional brush used to fill glyphs.

pen Pen

Optional pen used to outline glyphs.

DrawText(ReadOnlySpan<ushort>, ReadOnlySpan<Vector2>, RichGlyphOptions, Brush?, Pen?)

Draws positioned glyphs onto this canvas.

public abstract void DrawText(ReadOnlySpan<ushort> glyphIds, ReadOnlySpan<Vector2> points, RichGlyphOptions options, Brush? brush, Pen? pen)

Parameters

glyphIds ReadOnlySpan<ushort>

The glyph identifiers.

points ReadOnlySpan<Vector2>

The absolute glyph origins in pixel units.

options RichGlyphOptions

The glyph rendering options, including the font and optional glyph paint.

brush Brush

Default brush used to fill glyphs when Brush is not set.

pen Pen

Default pen used to outline glyphs when Pen is not set.

DrawText(ushort, RichGlyphOptions, Brush?, Pen?)

Draws a single glyph, identified by its glyph id, onto this canvas.

public abstract void DrawText(ushort glyphId, RichGlyphOptions options, Brush? brush, Pen? pen)

Parameters

glyphId ushort

The id of the glyph within the font face referenced by options.

options RichGlyphOptions

The glyph rendering options, including the font, origin, grapheme index and optional per-glyph paint.

brush Brush

Default brush used to fill the glyph when Brush is not set.

pen Pen

Default pen used to outline the glyph when Pen is not set.

Fill(Brush)

Fills the whole canvas using the given brush.

public void Fill(Brush brush)

Parameters

brush Brush

Brush used to shade destination pixels.

Fill(Brush, IPath)

Fills a path in local coordinates using the given brush.

public abstract void Fill(Brush brush, IPath path)

Parameters

brush Brush

Brush used to shade covered pixels.

path IPath

The path to fill.

Fill(Brush, IPathCollection)

Fills all paths in a collection using the given brush.

public void Fill(Brush brush, IPathCollection paths)

Parameters

brush Brush

Brush used to shade covered pixels.

paths IPathCollection

Path collection to fill.

Fill(Brush, PathBuilder)

Fills a path built by the provided builder using the given brush.

public void Fill(Brush brush, PathBuilder pathBuilder)

Parameters

brush Brush

Brush used to shade covered pixels.

pathBuilder PathBuilder

The path builder describing the fill region.

Fill(Brush, Rectangle)

Fills a local region using the given brush.

public void Fill(Brush brush, Rectangle region)

Parameters

brush Brush

Brush used to shade destination pixels.

region Rectangle

Region to fill in local coordinates.

FillArc(Brush, PointF, SizeF, float, float, float)

Fills the closed arc shape produced by joining the arc endpoints with a straight line.

public void FillArc(Brush brush, PointF center, SizeF radius, float rotation, float startAngle, float sweepAngle)

Parameters

brush Brush

Brush used to shade covered pixels.

center PointF

Arc center point in local coordinates.

radius SizeF

Arc radii in local coordinates.

rotation float

Ellipse rotation in degrees.

startAngle float

Arc start angle in degrees.

sweepAngle float

Arc sweep angle in degrees.

FillEllipse(Brush, PointF, SizeF)

Fills an ellipse using the provided brush.

public void FillEllipse(Brush brush, PointF center, SizeF size)

Parameters

brush Brush

Brush used to shade covered pixels.

center PointF

Ellipse center point in local coordinates.

size SizeF

Ellipse width and height in local coordinates.

FillPie(Brush, PointF, SizeF, float, float)

Fills a pie sector using the provided brush.

public void FillPie(Brush brush, PointF center, SizeF radius, float startAngle, float sweepAngle)

Parameters

brush Brush

Brush used to shade covered pixels.

center PointF

The center point of the pie sector in local coordinates.

radius SizeF

The x and y radii of the pie sector in local coordinates.

startAngle float

The start angle of the pie sector in degrees.

sweepAngle float

The sweep angle of the pie sector in degrees.

FillPie(Brush, PointF, SizeF, float, float, float)

Fills a pie sector using the provided brush.

public void FillPie(Brush brush, PointF center, SizeF radius, float rotation, float startAngle, float sweepAngle)

Parameters

brush Brush

Brush used to shade covered pixels.

center PointF

The center point of the pie sector in local coordinates.

radius SizeF

The x and y radii of the pie sector in local coordinates.

rotation float

Ellipse rotation in degrees.

startAngle float

The start angle of the pie sector in degrees.

sweepAngle float

The sweep angle of the pie sector in degrees.

Flush()

Seals the drawing commands recorded so far into an ordered range so that subsequent commands begin a new range.

public abstract void Flush()

Remarks

This does not rasterize or composite anything into the target frame. Recorded commands are replayed into the target only when the root canvas is disposed, or when they are lowered explicitly through CreateScene(), RenderScene(DrawingBackendScene) or CopyPixelsFrom(DrawingCanvas, Rectangle, Point). Use this to establish an ordering boundary in the recorded timeline without ending the canvas.

MeasureText(RichTextOptions, ReadOnlySpan<char>)

Measures the full set of layout metrics for the supplied text.

public abstract TextMetrics MeasureText(RichTextOptions textOptions, ReadOnlySpan<char> text)

Parameters

textOptions RichTextOptions

The text shaping and layout options.

text ReadOnlySpan<char>

The text to measure.

Returns

TextMetrics

A TextMetrics value containing the metrics for the laid-out text.

RenderScene(DrawingBackendScene)

Records a previously created backend scene into this canvas' command timeline.

public abstract void RenderScene(DrawingBackendScene scene)

Parameters

scene DrawingBackendScene

The backend scene to render.

Remarks

The active command range is sealed before the scene is inserted so the scene renders in submission order relative to the commands recorded around it. Like other recorded work, the scene is replayed into the target frame when the root canvas is disposed or otherwise flushed, not at the point of this call.

Restore()

Restores the most recently saved state.

public abstract void Restore()

Remarks

If the most recently saved state was created by a SaveLayer overload, the layer is closed and becomes part of subsequent rendering.

RestoreTo(int)

Restores to a specific save count.

public abstract void RestoreTo(int saveCount)

Parameters

saveCount int

The save count to restore to.

Remarks

State frames above saveCount are discarded, and the last discarded frame becomes the current state. If any discarded state was created by a SaveLayer overload, those layers are closed and become part of subsequent rendering.

Save()

Saves the current drawing state on the state stack.

public abstract int Save()

Returns

int

The save count after the state has been pushed.

Remarks

This operation stores the current canvas state by reference. If the same DrawingOptions instance is mutated after Save(), those mutations are visible when restoring.

Save(DrawingOptions)

Saves the current drawing state and replaces the active state with the provided options.

public abstract int Save(DrawingOptions options)

Parameters

options DrawingOptions

Drawing options for the new active state.

Returns

int

The save count after the previous state has been pushed.

Remarks

The provided options instance is stored by reference. Mutating it after this call mutates the active/restored state behavior.

SaveLayer()

Saves the current drawing state and begins an isolated compositing layer over the whole canvas.

public int SaveLayer()

Returns

int

The save count after the layer state has been pushed.

SaveLayer(GraphicsOptions)

Saves the current drawing state and begins an isolated compositing layer over the whole canvas.

public int SaveLayer(GraphicsOptions layerOptions)

Parameters

layerOptions GraphicsOptions

Graphics options controlling how the layer is composited on restore.

Returns

int

The save count after the layer state has been pushed.

SaveLayer(GraphicsOptions, IPath, LayerEffect)

Saves the current drawing state and begins an isolated compositing layer whose content is transformed by an effect confined to a path region when the layer is restored.

public abstract int SaveLayer(GraphicsOptions layerOptions, IPath region, LayerEffect effect)

Parameters

layerOptions GraphicsOptions

Graphics options controlling how the closed layer is composited against the parent canvas.

region IPath

The path region the effect processes, in local coordinates.

effect LayerEffect

The effect applied to the layer content on restore.

Returns

int

The save count after the layer state has been pushed.

Remarks

The effect processes only pixels covered by the supplied path; its output lands on the path translated by the effect's offset. The layer bounds are derived from the path and expanded by the effect's reach.

SaveLayer(GraphicsOptions, IPath, LayerEffect, DrawingOptions)

Saves the current drawing state and begins an isolated compositing layer whose content is transformed by an effect confined to a path region when the layer is restored, using the supplied drawing options for commands recorded into the layer.

public abstract int SaveLayer(GraphicsOptions layerOptions, IPath region, LayerEffect effect, DrawingOptions options)

Parameters

layerOptions GraphicsOptions

Graphics options controlling how the closed layer is composited against the parent canvas.

region IPath

The path region the effect processes, in local coordinates.

effect LayerEffect

The effect applied to the layer content on restore.

options DrawingOptions

Drawing options for the layer contents.

Returns

int

The save count after the layer state has been pushed.

SaveLayer(GraphicsOptions, Rectangle)

Saves the current drawing state and begins an isolated compositing layer bounded to a subregion. Subsequent draw commands target that layer until Restore() closes it.

public abstract int SaveLayer(GraphicsOptions layerOptions, Rectangle bounds)

Parameters

layerOptions GraphicsOptions

Graphics options controlling how the closed layer is composited against the parent canvas.

bounds Rectangle

The local bounds of the layer. Only this region is allocated and composited.

Returns

int

The save count after the layer state has been pushed.

Remarks

The layer bounds are expressed in the current local coordinate system and are transformed with the active drawing transform when the layer is created. They limit allocation and compositing only; they do not change the canvas coordinate system used by commands recorded inside the layer.

SaveLayer(GraphicsOptions, Rectangle, DrawingOptions)

Saves the current drawing state and begins an isolated compositing layer using the supplied drawing options for commands recorded into the layer.

public abstract int SaveLayer(GraphicsOptions layerOptions, Rectangle bounds, DrawingOptions options)

Parameters

layerOptions GraphicsOptions

Graphics options controlling how the closed layer is composited against the parent canvas.

bounds Rectangle

The local bounds of the layer. Only this region is allocated and composited.

options DrawingOptions

Drawing options for the layer contents.

Returns

int

The save count after the layer state has been pushed.

SaveLayer(GraphicsOptions, Rectangle, LayerEffect)

Saves the current drawing state and begins an isolated compositing layer whose content is transformed by an effect when the layer is restored.

public abstract int SaveLayer(GraphicsOptions layerOptions, Rectangle bounds, LayerEffect effect)

Parameters

layerOptions GraphicsOptions

Graphics options controlling how the closed layer is composited against the parent canvas.

bounds Rectangle

The content bounds in local canvas coordinates.

effect LayerEffect

The effect applied to the layer content on restore.

Returns

int

The save count after the layer state has been pushed.

Remarks

The layer isolates the content, so the effect operates on exactly what is drawn between this call and the matching Restore(), against transparency; a DropShadowLayerEffect, for example, slots its shadow beneath that content before the layer composites onto the canvas. The bounds are expanded internally by the effect's reach so blurred or offset output is not cut off.

SaveLayer(GraphicsOptions, Rectangle, LayerEffect, DrawingOptions)

Saves the current drawing state and begins an isolated compositing layer whose content is transformed by an effect when the layer is restored, using the supplied drawing options for commands recorded into the layer.

public abstract int SaveLayer(GraphicsOptions layerOptions, Rectangle bounds, LayerEffect effect, DrawingOptions options)

Parameters

layerOptions GraphicsOptions

Graphics options controlling how the closed layer is composited against the parent canvas.

bounds Rectangle

The content bounds in local canvas coordinates.

effect LayerEffect

The effect applied to the layer content on restore.

options DrawingOptions

Drawing options for the layer contents.

Returns

int

The save count after the layer state has been pushed.