InkOverlay.Stroke, événement
Mise à jour : November 2007
Se produit lorsque l'utilisateur finit de dessiner un nouveau trait sur une tablette.
Espace de noms : Microsoft.Ink
Assembly : Microsoft.Ink (dans Microsoft.Ink.dll)
Syntaxe
'Déclaration
Public Event Stroke As InkCollectorStrokeEventHandler
'Utilisation
Dim instance As InkOverlay
Dim handler As InkCollectorStrokeEventHandler
AddHandler instance.Stroke, handler
public event InkCollectorStrokeEventHandler Stroke
public:
event InkCollectorStrokeEventHandler^ Stroke {
void add (InkCollectorStrokeEventHandler^ value);
void remove (InkCollectorStrokeEventHandler^ value);
}
/** @event */
public void add_Stroke (InkCollectorStrokeEventHandler value)
/** @event */
public void remove_Stroke (InkCollectorStrokeEventHandler value)
JScript ne prend pas en charge les événements.
Notes
Le gestionnaire d'événements reçoit un argument de type InkCollectorStrokeEventArgs contenant des données concernant cet événement.
Lorsque vous créez un délégué InkCollectorStrokeEventHandler, vous identifiez la méthode qui gère l'événement. Pour associer l'événement au gestionnaire d'événements, ajoutez une instance du délégué à l'événement. Le gestionnaire d'événements est appelé chaque fois qu'un événement se produit, sauf si vous supprimez le délégué. L'intérêt d'événement par défaut est activé.
L'événement Stroke se déclenche en mode de sélection ou de suppression, et pas uniquement pendant l'insertion d'entrée manuscrite. Vous devez surveiller le mode de modification (que vous êtes chargé de définir) et connaître le mode avant d'interpréter l'événement. Ces conditions offrent une plus grande liberté d'innovation sur la plateforme grâce à une sensibilité accrue des événements de plateforme.
Remarque : |
---|
L'événement Stroke se déclenche lorsque l'utilisateur termine le dessin d'un trait, et non lorsqu'un objet Stroke est ajouté à la collection Strokes. Lorsque l'utilisateur commence à dessiner un trait, il est ajouté immédiatement à la collection Strokes ; toutefois, l'événement Stroke ne se déclenche qu'à la fin du trait. Par conséquent, un objet Stroke peut exister dans la collection Strokes avant que le gestionnaire d'événements Stroke ne se déclenche pour cet objet Stroke. |
Exemples
Cet exemple montre comment vous pouvez vous abonner à l'événement CursorDown et comment l'événement Stroke calcule le temps qu'il faut à l'utilisateur pour créer un trait.
Au départ d'un trait, l'événement CursorDown se déclenche. L'heure actuelle est placée dans la collection ExtendedProperties de l'objet Stroke.
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);
}
Lorsque le trait est terminé, l'événement Stroke se déclenche. L'heure de début est récupérée à partir de la collection ExtendedProperties de l'objet Stroke et utilisée pour calculer le temps écoulé.
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();
}
}
Dans cet exemple, le gestionnaire d'événements pour l'événement Stroke crée un trait fictif en dessinant un nouvel objet Stroke basé sur l'objet Stroke actif, puis modifie la couleur et la position du nouvel objet Stroke.
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();
}
Plateformes
Windows Vista
Le .NET Framework et le .NET Compact Framework ne prennent pas en charge toutes les versions de chaque plateforme. Pour obtenir la liste des versions prises en charge, consultez Configuration requise du .NET Framework.
Informations de version
.NET Framework
Pris en charge dans : 3.0