Språk

Stroke.OnInvalidated(EventArgs) Metod

Definition

Genererar händelsen Invalidated .

protected:
 virtual void OnInvalidated(EventArgs ^ e);
protected virtual void OnInvalidated(EventArgs e);
abstract member OnInvalidated : EventArgs -> unit
override this.OnInvalidated : EventArgs -> unit
Protected Overridable Sub OnInvalidated (e As EventArgs)

Parametrar

e
EventArgs

En EventArgs som innehåller händelsedata.

Exempel

I följande exempel ritas antingen en Stroke heldragen linje eller som en serie StylusPoint objekt, beroende på egenskapen Mode . Exemplet anropar OnInvalidated metoden, som i sin tur anropar DrawCore var strecket ritas.

// Enumerator that specifies the drawing mode of the stroke.
public enum DrawingMode
{
    Solid,
    StyulusPoints
}
' Enumerator that specifies the drawing mode of the stroke.

Public Enum DrawingMode
    Solid
    StyulusPoints
End Enum 'DrawingMode
private DrawingMode strokeMode = DrawingMode.Solid;

// Property that specifies whether to draw a solid stroke or the stylus points
public DrawingMode Mode
{
    get
    {
        return strokeMode;
    }

     set
    {
        if (strokeMode != value)
        {
            strokeMode = value;
            this.OnInvalidated(new EventArgs());
        }
    }
}

protected override void DrawCore(System.Windows.Media.DrawingContext context, DrawingAttributes overrides)
{
    SolidColorBrush strokeBrush = new SolidColorBrush(overrides.Color);

    // If strokeMode it set to Solid, draw the strokes regularly.
    // Otherwise, draw the stylus points.
    if (strokeMode == DrawingMode.Solid)
    {
        Geometry geometry = GetGeometry(overrides);
        context.DrawGeometry(strokeBrush, null, geometry);
    }
    else // strokeMode == DrawingMode.StylusPoints
    {
        StylusPointCollection points;

        // Get the stylus points used to draw the stroke.  The points used depends on
        // the value of FitToCurve.
        if (this.DrawingAttributes.FitToCurve)
        {
            points = this.GetBezierStylusPoints();
        }
        else
        {
            points = this.StylusPoints;
        }

        // Draw a circle at each stylus point.
        foreach (StylusPoint p in points)
        {
            context.DrawEllipse(null, new Pen(strokeBrush, 1), (Point)p, 5, 5);
        }
    }
}
Private strokeMode As DrawingMode = DrawingMode.Solid

' Property that specifies whether to draw a solid stroke or the stylus points
Public Property Mode() As DrawingMode

    Get
        Return strokeMode
    End Get

    Set(ByVal value As DrawingMode)
        If strokeMode <> value Then
            strokeMode = value
            Me.OnInvalidated(New EventArgs())
        End If
    End Set

End Property


Protected Overrides Sub DrawCore(ByVal context As System.Windows.Media.DrawingContext, _
            ByVal overridedAttributes As DrawingAttributes)
    Dim strokeBrush As New SolidColorBrush(overridedAttributes.Color)

    ' If strokeMode it set to Solid, draw the strokes regularly.
    ' Otherwise, draw the stylus points.
    If strokeMode = DrawingMode.Solid Then
        Dim geometry As Geometry = GetGeometry(overridedAttributes)
        context.DrawGeometry(strokeBrush, Nothing, geometry)
        ' strokeMode == DrawingMode.StylusPoints
    Else
        Dim points As StylusPointCollection

        ' Get the stylus points used to draw the stroke.  The points used depends on
        ' the value of FitToCurve.
        If Me.DrawingAttributes.FitToCurve Then
            points = Me.GetBezierStylusPoints()
        Else
            points = Me.StylusPoints
        End If

        ' Draw a circle at each stylus point.
        Dim p As StylusPoint
        For Each p In points
            context.DrawEllipse(Nothing, New Pen(strokeBrush, 1), CType(p, Point), 5, 5)
        Next p
    End If

End Sub

Kommentarer

Om du ärver från Stroke klassen och strokens utseende baseras på ett anpassat tillstånd måste du anropa OnInvalidated metoden för att skapa Invalidated händelsen. Hanterar InkPresenterInvalidated händelsen och anropar DrawCore metoden.

Gäller för