StrokeCollection.Draw(DrawingContext) Method

Definition

Draws the strokes in the StrokeCollection.

public:
 void Draw(System::Windows::Media::DrawingContext ^ context);
public void Draw (System.Windows.Media.DrawingContext context);
member this.Draw : System.Windows.Media.DrawingContext -> unit
Public Sub Draw (context As DrawingContext)

Parameters

context
DrawingContext

The DrawingContext on which to draw the StrokeCollection.

Examples

The following example creates a custom element that displays a thumbnail view of an InkCanvas. The custom element keeps a reference to an InkCanvas and redraws itself when the StrokeCollected event occurs.

public class InkThumbnail : FrameworkElement
{
    private InkCanvas sourceInkCanvas = null;
    
    // Get the InkCanvas that the user draws on.
    public InkCanvas Source
    {

        get 
        { 
            return sourceInkCanvas; 
        }

        set
        {
            
            if (sourceInkCanvas != null)
            {
                // Detach the event handler from the former InkCanvas.
                sourceInkCanvas.StrokeCollected -= new InkCanvasStrokeCollectedEventHandler(SourceChanged);
            }

            sourceInkCanvas = value;

            if (sourceInkCanvas != null)
            {
                // Attach the even handler to the InkCannvas
                sourceInkCanvas.StrokeCollected += new InkCanvasStrokeCollectedEventHandler(SourceChanged);
            }
        }
    }

    // Handle the StrokeCollection event of the InkCanvas.
    private void SourceChanged(object sender, InkCanvasStrokeCollectedEventArgs e)
    {

        // Cause the thumbnail to be redrawn.
        this.InvalidateVisual();
    }

    protected override void OnRender(DrawingContext drawingContext)
    {
        
        base.OnRender(drawingContext);

        // Draw the strokes from the InkCanvas at 1/4 of their size.
        drawingContext.PushTransform(new ScaleTransform(0.25, 0.25));

        if (sourceInkCanvas != null)
        {
            sourceInkCanvas.Strokes.Draw(drawingContext);
        }
    }
}
Public Class InkThumbnail
    Inherits FrameworkElement

    Private sourceInkCanvas As InkCanvas = Nothing

    ' Get the InkCanvas that the user draws on.
    Public Property Source() As InkCanvas
        Get
            Return sourceInkCanvas
        End Get

        Set(ByVal Value As InkCanvas)

            If Not sourceInkCanvas Is Nothing Then

                ' Detach the event handler from the former InkCanvas.
                RemoveHandler sourceInkCanvas.StrokeCollected, AddressOf SourceChanged
            End If

            sourceInkCanvas = Value


            If Not sourceInkCanvas Is Nothing Then

                ' Attach the even handler to the InkCannvas
                AddHandler sourceInkCanvas.StrokeCollected, AddressOf SourceChanged
            End If

        End Set
    End Property

    ' Handle the StrokeCollection event of the InkCanvas.
    Private Sub SourceChanged(ByVal sender As Object, ByVal e As InkCanvasStrokeCollectedEventArgs)

        ' Cause the thumbnail to be redrawn.
        Me.InvalidateVisual()
    End Sub


    Protected Overrides Sub OnRender(ByVal drawingContext As DrawingContext)

        MyBase.OnRender(drawingContext)

        ' Draw the strokes from the InkCanvas at 1/4 of their size.
        drawingContext.PushTransform(New ScaleTransform(0.25, 0.25))

        If Not sourceInkCanvas Is Nothing Then
            sourceInkCanvas.Strokes.Draw(drawingContext)
        End If

    End Sub

End Class

Applies to