In This Article

CanvasControl Class

Represents a control that supports custom rendering of content.

public class CanvasControl : UIElement, IInputElement, IUIElement, ILogicalTreeNode, IDpiAwareElement, IDisposable, ICanvas
Inheritance:
object MarshalByRefObject DisposableObject LogicalTreeNodeBase UIElement object
Implements:
IInputElement IUIElement ILogicalTreeNode IDpiAwareElement IDisposable ICanvas

Constructors

CanvasControl()

Initializes an instance of the CanvasControl class.

public CanvasControl()

CanvasControl(bool)

Initializes an instance of the CanvasControl class.

public CanvasControl(bool isForPrinter)
Parameter Type Description
isForPrinter bool

Whether this canvas is created for a printer.

Properties

IsForPrinter

Gets whether this canvas is created for a printer.

protected bool IsForPrinter { get; }

Property Value

bool:

true if this canvas is created for a printer; otherwise, false.

Methods

CreateDrawContext(ICanvas, Graphics, Rectangle)

Creates a CanvasDrawContext for the Draw event.

protected virtual CanvasDrawContext CreateDrawContext(ICanvas canvas, Graphics platformRenderer, Rectangle bounds)
Parameter Type Description
canvas ICanvas

The ICanvas being drawn.

platformRenderer Graphics

The native object used for drawing.

bounds Rectangle

The bounds in which to draw.

Returns

CanvasDrawContext:

The CanvasDrawContext that was created.

CreateTextBatch()

Creates an IDisposable object that contains a reference to a text renderer, which can be passed to the RunTextFormatter(IDisposable) to more efficiently process multiple similar text layouts in a batch.

public IDisposable CreateTextBatch()

Returns

IDisposable:

An IDisposable object. Once disposed, the batch is ended.

CreateTextLayout(ITextProvider, float, string, float, Color, FontWeights, FontStyles, IEnumerable<ITextSpacer>)

Creates an ITextLayout that can render text runs on a canvas.

public ITextLayout CreateTextLayout(ITextProvider textProvider, float maxWidth, string fontFamilyName, float fontSize, Color foreground, FontWeights fontWeight, FontStyles fontStyle, IEnumerable<ITextSpacer> spacers)
Parameter Type Description
textProvider ITextProvider

An ITextProvider that provides access to the text string.

maxWidth float

The maximum width of the layout, which is used if word wrap is enabled.

fontFamilyName string

The default font family name.

fontSize float

The default font size.

foreground Color

The default foreground.

fontWeight FontWeights

The default font weight.

fontStyle FontStyles

The default font style.

spacers IEnumerable<ITextSpacer>

The optional intra-text spacers.

Returns

ITextLayout:

The ITextLayout that was created.

CreateTextLayout(ITextProvider, float, string, float, Color, IEnumerable<ITextSpacer>)

Creates an ITextLayout that can render text runs on a canvas.

public ITextLayout CreateTextLayout(ITextProvider textProvider, float maxWidth, string fontFamilyName, float fontSize, Color foreground, IEnumerable<ITextSpacer> spacers)
Parameter Type Description
textProvider ITextProvider

An ITextProvider that provides access to the text string.

maxWidth float

The maximum width of the layout, which is used if word wrap is enabled.

fontFamilyName string

The default font family name.

fontSize float

The default font size.

foreground Color

The default foreground.

spacers IEnumerable<ITextSpacer>

The optional intra-text spacers.

Returns

ITextLayout:

The ITextLayout that was created.

CreateTextLayout(string, float, string, float, Color)

Creates an ITextLayout that can render text runs on a canvas.

public ITextLayout CreateTextLayout(string text, float maxWidth, string fontFamilyName, float fontSize, Color foreground)
Parameter Type Description
text string

The text string.

maxWidth float

The maximum width of the layout, which is used if word wrap is enabled.

fontFamilyName string

The default font family name.

fontSize float

The default font size.

foreground Color

The default foreground.

Returns

ITextLayout:

The ITextLayout that was created.

CreateTextSpacer(int, object, Size, float)

Creates an ITextSpacer that can create intra-text space within an ITextLayout.

public ITextSpacer CreateTextSpacer(int characterIndex, object key, Size size, float baseline)
Parameter Type Description
characterIndex int

The character index at which the spacer should be inserted.

key object

An optional object that uniquely identifies the spacer.

size Size

The size of the spacer.

baseline float

The baseline of the spacer.

Returns

ITextSpacer:

The ITextSpacer that was created.

Dispose(bool)

Releases the unmanaged resources used by the object and optionally releases the managed resources.

protected override void Dispose(bool disposing)
Parameter Type Description
disposing bool

true to release both managed and unmanaged resources; false to release only unmanaged resources.

Remarks

This method is called by the public Dispose method and the Finalize method. Dispose invokes this method with the disposing parameter set to true. Finalize invokes this method with disposing set to false.

DpiScaleChanged(SizeF)

Called when the DPI-based scale factor of the element changes.

public override void DpiScaleChanged(SizeF scaleFactor)
Parameter Type Description
scaleFactor SizeF

The new scale factor where Width is applied to the x-axis, and Height is applied to the y-axis.

See Also

ExecuteFunc<T>(Func<T>)

Safely executes an Func<TResult> that deals with canvas resource creation and occurs outside of the Draw event handler.

public T ExecuteFunc<T>(Func<T> func)
Type Parameters:
T -
Parameter Type Description
func Func<T>

The Func<TResult> to execute.

Returns

T:

true if the canvas was ready and executed the function; otherwise, false.

GetSolidColorBrush(Color)

Returns a solid color brush for the specified Color.

public SolidBrush GetSolidColorBrush(Color color)
Parameter Type Description
color Color

The brush color.

Returns

SolidBrush:

A solid color brush for the specified Color.

GetSquiggleLinePen(Color)

Returns a squiggle line pen for the specified Color.

public Pen GetSquiggleLinePen(Color color)
Parameter Type Description
color Color

The pen color.

Returns

Pen:

A squiggle line pen for the specified Color.

GetSquiggleLinePen(Color, float)

Returns a squiggle line pen for the specified Color.

public Pen GetSquiggleLinePen(Color color, float thickness)
Parameter Type Description
color Color

The pen color.

thickness float

The pen thickness.

Returns

Pen:

A squiggle line pen for the specified Color and thickness.

InvalidateRender()

Invalidates and repaints the control.

public void InvalidateRender()

OnRender(PaintEventArgs)

Occurs when rendering the control.

protected override void OnRender(PaintEventArgs e)
Parameter Type Description
e PaintEventArgs

The PaintEventArgs that contains data related to this event.

RenderToPrinter(Graphics, Rectangle)

Renders to an offscreen printer Graphics.

protected void RenderToPrinter(Graphics platformRenderer, Rectangle bounds)
Parameter Type Description
platformRenderer Graphics

The Graphics to use.

bounds Rectangle

The bounds in which to render.

Events

Draw

Occurs when the canvas should be rendered.

public event EventHandler<CanvasDrawEventArgs> Draw

Event Type

EventHandler<CanvasDrawEventArgs>

Inherited Members

Extension Methods