Compartir a través de


InkCollectorGestureEventHandler Delegate

Represents the method that handles the Gesture event of an InkCollector object.

Namespace: Microsoft.Ink
Assembly: Microsoft.Ink (in microsoft.ink.dll)

Syntax

'Declaration
Public Delegate Sub InkCollectorGestureEventHandler ( _
    sender As Object, _
    e As InkCollectorGestureEventArgs _
)
'Usage
Dim instance As New InkCollectorGestureEventHandler(AddressOf HandlerMethod)
public delegate void InkCollectorGestureEventHandler (
    Object sender,
    InkCollectorGestureEventArgs e
)
public delegate void InkCollectorGestureEventHandler (
    Object^ sender, 
    InkCollectorGestureEventArgs^ e
)
/** @delegate */
public delegate void InkCollectorGestureEventHandler (
    Object sender, 
    InkCollectorGestureEventArgs e
)
Not applicable.

Parameters

Remarks

The Gesture event occurs when the user performs a predefined application gesture with the pen, which is recognized by an application gesture recognizer.

When you create an InkCollectorGestureEventHandler delegate, you identify the method that handles the event. To associate the event with your event handler, add an instance of the delegate to the event. The event handler is called whenever the event occurs, unless you remove the delegate.

When the CollectionMode property is set to GestureOnly, the timeout between when a user adds a gesture and when the Gesture event occurs is a fixed value that you cannot alter programmatically. Gesture recognition is faster in CollectionMode mode.

To prevent the collection of ink while in CollectionMode mode:

  • Set the CollectionMode property to InkAndGesture.

  • Delete the Stroke object in the Stroke event.

  • Process the gesture in the Gesture event.

To prevent the flow of ink while gesturing, set the DynamicRendering property to false.

Note

To recognize gestures, you must use an object or control that can collect ink.

Note

The InkCollector object, the InkOverlay object, and the InkPicture control use the InkCollectorGestureEventHandler delegate to add a Gesture event handler.

Example

This simple C# example displays gesture event information in the status bar of the main form window. Start with a generic generated application, add a status bar, theStatusBar, to the main form, and then add the following code.

//...
using Microsoft.Ink;

namespace CSGestureEvents
{
    public class Form1 : System.Windows.Forms.Form
    {
        private System.Windows.Forms.StatusBar theStatusBar;
        // ... The generated code will be here.
        //Add this code following the implementation of Main():
        InkCollector theInkCollector;

        private void Form1_Load(object sender, System.EventArgs e)
        {
            // Initialize the InkCollector object.
            theInkCollector = new InkCollector(Handle);
            theInkCollector.CollectionMode = CollectionMode.InkAndGesture;
            ClearAppGestures(theInkCollector);
            // Turn on interest in the ChevronDown application gesture.
            theInkCollector.SetGestureStatus(ApplicationGesture.ChevronDown, true);
            theInkCollector.SetGestureStatus(ApplicationGesture.ChevronUp, true);
            theInkCollector.Gesture += new InkCollectorGestureEventHandler(Gesture_Event);
            theInkCollector.SystemGesture += new InkCollectorSystemGestureEventHandler(SystemGesture_Event);
            theInkCollector.Enabled = true;
        }

        private void Gesture_Event(object sender,
            InkCollectorGestureEventArgs e)
        {
            ApplicationGesture theGestureId = e.Gestures[0].Id;
            theStatusBar.Text = theGestureId.ToString();
            // Cancelling the gesture will cause the ink to remain.
            if (theGestureId == ApplicationGesture.ChevronDown)
                e.Cancel = true;
        }

        private void SystemGesture_Event(object sender,
            InkCollectorSystemGestureEventArgs e)
        {
            SystemGesture theGestureId = e.Id;
            theStatusBar.Text = "System: " + theGestureId.ToString() +
                " " + e.Point.ToString();
        }

        // Set all of the ApplicationGestures' status
        // to false on the InkCollector object.
        private void ClearAppGestures()
        {
            ApplicationGesture test = ApplicationGesture.NoGesture;
            System.Array theGestureIds = System.Enum.GetValues(test.GetType());
            foreach (ApplicationGesture theGestureId in theGestureIds)
            {
                theInkCollector.SetGestureStatus(theGestureId, false);
            }
        }

        // Event handler for the form's closed event
        private void Form1_Closed(object sender, System.EventArgs e)
        {
            theInkCollector.Dispose();
            theInkCollector = null;
        }
    }
}

This Microsoft® Visual Basic® .NET example displays gesture event information in the status bar of the main form window. Start with a generic generated application, add a status bar, theStatusBar, to the main form, and then add the following code.

Imports Microsoft.Ink
Public Class Form1
    Inherits System.Windows.Forms.Form

#Region " Windows Form Designer generated code "
    'This contains the standard generated form code
    Private theStatusBar As System.Windows.Forms.StatusBar
#End Region

    Dim theInkCollector As InkCollector

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        'Initialize InkCollector.
        theInkCollector = New InkCollector(Handle)
        'Set the InkCollector to collect both ink and gestures.
        theInkCollector.CollectionMode = CollectionMode.InkAndGesture
        'Clear interest in all of the application gestures
        ClearAppGestures(theInkCollector)
        'Set the interest in only two gestures.
        theInkCollector.SetGestureStatus(ApplicationGesture.ChevronDown, True)
        theInkCollector.SetGestureStatus(ApplicationGesture.ChevronUp, True)
        'Add the handlers for application and system gestures.
        AddHandler theInkCollector.Gesture, AddressOf Gesture_Event
        AddHandler theInkCollector.SystemGesture, AddressOf SystemGesture_Event
        theInkCollector.Enabled = True
    End Sub

    Private Sub Gesture_Event(ByVal sender As Object, _
        ByVal e As InkCollectorGestureEventArgs)
        Dim theGestureId As ApplicationGesture = e.Gestures(0).Id
        theStatusBar.Text = theGestureId.ToString()
        'Cancelling the gesture will cause the ink to remain.
        If theGestureId = ApplicationGesture.ChevronDown Then
            e.Cancel = True
        End If
    End Sub

    Private Sub SystemGesture_Event( _
        ByVal sender As Object, _
        ByVal e As InkCollectorSystemGestureEventArgs)
        Dim theGestureId As SystemGesture = e.Id
        theStatusBar.Text = "System: " + theGestureId.ToString() + "   " + e.Point.ToString()
    End Sub

    ' Set all of the ApplicationGestures' status
    ' to false on the InkCollector object.
    Private Sub ClearAppGestures()
        Dim test As ApplicationGesture = ApplicationGesture.NoGesture
        Dim theGestureIds As System.Array = System.Enum.GetValues(test.GetType())
        Dim theGestureId As ApplicationGesture
        For Each theGestureId In theGestureIds
            theInkCollector.SetGestureStatus(theGestureId, False)
        Next
    End Sub

    'Event handler for the form's closed event
    Private Sub Form1_Closed(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Closed
        theInkCollector.Dispose()
        Set theInkCollector = Nothing
    End Sub
End Class

Platforms

Windows 98, Windows Server 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

The Microsoft .NET Framework 3.0 is supported on Windows Vista, Microsoft Windows XP SP2, and Windows Server 2003 SP1.

Version Information

.NET Framework

Supported in: 3.0

See Also

Reference

Microsoft.Ink Namespace
ApplicationGesture
InkCollector.SetGestureStatus