Stroke.OnInvalidated(EventArgs) Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Invalidated Zgłasza zdarzenie.
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)
Parametry
Przykłady
Poniższy przykład rysuje Stroke ciąg jako pociągnięcie stałe lub serię StylusPoint obiektów w zależności od Mode
właściwości. Przykład wywołuje metodę OnInvalidated , która z kolei wywołuje DrawCore miejsce narysowania pociągnięcia.
// 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
Uwagi
Jeśli dziedziczysz klasę Stroke i wygląd pociągnięcia jest oparty na stanie niestandardowym, musisz wywołać OnInvalidated metodę w celu wywołania Invalidated zdarzenia. Element InkPresenter obsługuje Invalidated zdarzenie i wywołuje metodę DrawCore .