InkCollectorStrokeEventHandler-Delegat
Stellt die Methode dar, die das Stroke-Ereignis eines InkCollector-Objekts behandelt.
Namespace: Microsoft.Ink
Assembly: Microsoft.Ink (in Microsoft.Ink.dll)
Syntax
'Declaration
Public Delegate Sub InkCollectorStrokeEventHandler ( _
sender As Object, _
e As InkCollectorStrokeEventArgs _
)
'Usage
Dim instance As New InkCollectorStrokeEventHandler(AddressOf HandlerMethod)
public delegate void InkCollectorStrokeEventHandler(
Object sender,
InkCollectorStrokeEventArgs e
)
public delegate void InkCollectorStrokeEventHandler(
Object^ sender,
InkCollectorStrokeEventArgs^ e
)
/** @delegate */
public delegate void InkCollectorStrokeEventHandler(
Object sender,
InkCollectorStrokeEventArgs e
)
JScript unterstützt keine Delegaten.
Parameter
- sender
Typ: System.Object
Das InkCollector-Quellobjekt dieses Ereignisses.
- e
Typ: Microsoft.Ink.InkCollectorStrokeEventArgs
Das InkCollectorStrokeEventArgs-Objekt, das die Ereignisdaten enthält.
Hinweise
Beim Erstellen eines InkCollectorStrokeEventHandler-Delegaten geben Sie die Methode für die Ereignisbehandlung an. Um dem Ereignishandler das Ereignis zuzuordnen, fügen Sie dem Ereignis eine Instanz des Delegaten hinzu. Der Ereignishandler wird bei jedem Eintreten des Ereignisses aufgerufen, sofern der Delegat nicht entfernt wird. Das Standardinteresse an Ereignissen ist aktiviert.
Das Stroke-Ereignis wird selbst im Auswahl- oder Löschmodus ausgelöst, nicht nur beim Einfügen von Freihandeingaben. Dies erfordert, dass Sie den Bearbeitungsmodus (den Sie festlegen müssen) überwachen und den Modus kennen, bevor Sie das Ereignis interpretieren. Der Vorteil dieser Anforderung besteht in einer größeren Flexibilität für Neuerungen auf der Plattform, da Plattformereignisse besser erkannt werden können.
Beispiele
In diesem Beispiel wird veranschaulicht, wie Sie das CursorDown-Ereignis und das Stroke-Ereignis abonnieren können, um zu berechnen, wieviel Zeit der Benutzer zum Erstellen eines Strichs benötigt.
Am Anfang eines Strichs wird das CursorDown-Ereignis ausgelöst. Die aktuelle Zeit wird in der ExtendedProperties-Auflistung des Stroke-Objekts platziert.
Private Sub mInkObject_CursorDown(ByVal sender As Object, ByVal e As InkCollectorCursorDownEventArgs)
' add extended property indicating the time the stroke started
' STROKE_START_GUID is class level string via GUID generator
e.Stroke.ExtendedProperties.Add(New Guid(STROKE_START_GUID), DateTime.Now)
End Sub
private void mInkObject_CursorDown(object sender, InkCollectorCursorDownEventArgs e)
{
// add extended property indicating the time the stroke started
// STROKE_START_GUID is class level string via GUID generator
e.Stroke.ExtendedProperties.Add(new Guid(STROKE_START_GUID), DateTime.Now);
}
Wenn der Strich abgeschlossen ist, wird das Stroke-Ereignis ausgelöst. Die Startzeit wird aus der ExtendedProperties-Auflistung des Stroke-Objekts abgerufen und zum Berechnen der verstrichenen Zeit verwendet.
Private Sub mInkObject_Stroke1(ByVal sender As Object, ByVal e As InkCollectorStrokeEventArgs)
' check to see if extended property for start time exists
' Attempting to access an extended property that hasn't been created throws an exception
' STROKE_START_GUID is class level string via GUID generator
If (e.Stroke.ExtendedProperties.DoesPropertyExist(New Guid(STROKE_START_GUID))) Then
Dim startTime As DateTime = DirectCast(e.Stroke.ExtendedProperties(New Guid(STROKE_START_GUID)).Data, DateTime)
Dim endTime As DateTime = DateTime.Now
Dim span As TimeSpan = New TimeSpan(endTime.Ticks - startTime.Ticks)
' add extended property indicating the time the stroke ended
' STROKE_END_GUID is class level string via GUID generator
e.Stroke.ExtendedProperties.Add(New Guid(STROKE_END_GUID), endTime)
' display the number of seconds in creating this stroke
Me.statusLabelStrokeTime.Text = span.TotalSeconds.ToString()
End If
End Sub
private void mInkObject_Stroke1(object sender, InkCollectorStrokeEventArgs e)
{
// check to see if extended property for start time exists
// Attempting to access an extended property that hasn't been created throws an exception
// STROKE_START_GUID is class level string via GUID generator
if (e.Stroke.ExtendedProperties.DoesPropertyExist(new Guid(STROKE_START_GUID)))
{
DateTime startTime = (DateTime)e.Stroke.ExtendedProperties[new Guid(STROKE_START_GUID)].Data;
DateTime endTime = DateTime.Now;
TimeSpan span = new TimeSpan(endTime.Ticks - startTime.Ticks);
// add extended property indicating the time the stroke ended
// STROKE_END_GUID is class level string via GUID generator
e.Stroke.ExtendedProperties.Add(new Guid(STROKE_END_GUID), endTime);
// display the number of seconds in creating this stroke
this.statusLabelStrokeTime.Text = span.TotalSeconds.ToString();
}
}
In diesem Beispiel erstellt der Ereignishandler einen Schattenstrich für das Stroke-Ereignis, indem er ein neues Stroke-Objekt auf der Grundlage des aktuellen Stroke-Objekts erstellt und dann die Farbe und Position des neu erstellten Stroke-Objekts ändert.
Private Sub mInkObject_Stroke2(ByVal sender As Object, ByVal e As InkCollectorStrokeEventArgs)
Me.mNumStroke = Me.mNumStroke + 1
statusLabelStrokeCount.Text = Me.mNumStroke.ToString()
' Add a new stroke created from the stroke points of the current stroke
Dim StrokeShadow As Stroke = e.Stroke.Ink.CreateStroke(e.Stroke.GetPoints())
' clone the DrawingAttributes and set color to Gray
StrokeShadow.DrawingAttributes = e.Stroke.DrawingAttributes.Clone()
StrokeShadow.DrawingAttributes.Color = Color.Gray
' use MaskPen to keep the shadow stroke in the background
StrokeShadow.DrawingAttributes.RasterOperation = RasterOperation.MaskPen
' offset the shadow stroke
StrokeShadow.Move(200, 200)
' redraw the ink canvas
panelInkCanvas.Invalidate()
End Sub
private void mInkObject_Stroke2(object sender, InkCollectorStrokeEventArgs e)
{
this.mNumStroke++;
statusLabelStrokeCount.Text = this.mNumStroke.ToString();
// Add a new stroke created from the stroke points of the current stroke
Stroke StrokeShadow = e.Stroke.Ink.CreateStroke(e.Stroke.GetPoints());
// clone the DrawingAttributes and set color to Gray
StrokeShadow.DrawingAttributes = e.Stroke.DrawingAttributes.Clone();
StrokeShadow.DrawingAttributes.Color = Color.Gray;
// use MaskPen to keep the shadow stroke in the background
StrokeShadow.DrawingAttributes.RasterOperation = RasterOperation.MaskPen;
// offset the shadow stroke
StrokeShadow.Move(200, 200);
// redraw the ink canvas
panelInkCanvas.Invalidate();
}
Plattformen
Windows Vista
.NET Framework und .NET Compact Framework unterstützen nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen für .NET Framework.
Versionsinformationen
.NET Framework
Unterstützt in: 3.0