Stroke.OnInvalidated(EventArgs) Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Löst das Invalidated-Ereignis aus.
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)
Parameter
Beispiele
Das folgende Beispiel zeichnet je Stroke nach Mode
Eigenschaft entweder als vollfarbigen Strich oder als Reihe von StylusPoint Objekten. Im Beispiel wird die OnInvalidated -Methode aufgerufen, die wiederum den DrawCore Ort aufruft, an dem der Strich gezeichnet wird.
// 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
Hinweise
Wenn Sie von der Stroke -Klasse erben und die Darstellung Ihrer Striche auf einem benutzerdefinierten Zustand basiert, müssen Sie die OnInvalidated -Methode aufrufen, um das Ereignis auszulösen Invalidated . Der InkPresenter behandelt das Invalidated Ereignis und ruft die DrawCore -Methode auf.