InkPicture.Gesture Event
Occurs when an application gesture is recognized.
Namespace: Microsoft.Ink
Assembly: Microsoft.Ink (in microsoft.ink.dll)
Syntax
'Declaration
Public Event Gesture As InkCollectorGestureEventHandler
'Usage
Dim instance As InkPicture
Dim handler As InkCollectorGestureEventHandler
AddHandler instance.Gesture, handler
public event InkCollectorGestureEventHandler Gesture
public:
event InkCollectorGestureEventHandler^ Gesture {
void add (InkCollectorGestureEventHandler^ value);
void remove (InkCollectorGestureEventHandler^ value);
}
/** @event */
public void add_Gesture (InkCollectorGestureEventHandler value)
/** @event */
public void remove_Gesture (InkCollectorGestureEventHandler value)
In JScript, you can handle the events defined by a class, but you cannot define your own.
Not applicable.
Remarks
For this event to occur, the InkPicture control must have interest in a set of application gestures. To set the InkPicture control's interest in a set of gestures, call the SetGestureStatus method.
For a list of specific application gestures, see the ApplicationGesture enumeration type. For more information about application gestures, see Using Gestures and Command Input on the Tablet PC.
The event handler receives an argument of type InkCollectorGestureEventArgs that contains data about this event
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 InkAndGesture mode.
To prevent the collection of ink while in InkAndGesture mode:
Set CollectionMode to InkAndGesture
Process the gesture in the Gesture event.
To prevent the flow of ink while gesturing, set the DynamicRendering property to false.
In addition to firing when inserting ink, the Gesture event fires when InkOverlayEditingMode enumeration value Select or Delete is applied. You are responsible for tracking the editing mode and should be aware of the mode before interpreting the event.
Note
To recognize gestures, you must use an object or control that can collect ink.
Note
The InkPicture control uses the InkCollectorGestureEventHandler delegate to add a gesture event handler.
Example
This C# example displays gesture event information in the status bar of the main form window. Start with a generic generated application, add an InkPicture control, theInkPicture
, to the main form, add a status bar, theStatusBar
, to the main form, and then add the following code.
[C#]
//...
using Microsoft.Ink;
namespace CSGestureEvents
{
public class Form1 : System.Windows.Forms.Form
{
private System.Windows.Forms.StatusBar theStatusBar;
private Microsoft.Ink.InkPicture theInkPicture;
// ... The generated code will be here.
//Add this code following the implementation of Main():
private void Form1_Load(object sender, System.EventArgs e)
{
theInkPicture.CollectionMode = CollectionMode.InkAndGesture;
ClearAppGestures();
// Turn on interest in the ChevronDown and ChevronUp application gestures.
theInkPicture.SetGestureStatus(ApplicationGesture.ChevronDown, true);
theInkPicture.SetGestureStatus(ApplicationGesture.ChevronUp, true);
theInkPicture.Gesture += new InkCollectorGestureEventHandler(Gesture_Event);
theInkPicture.SystemGesture += new InkCollectorSystemGestureEventHandler(SystemGesture_Event);
theInkPicture.InkEnabled = 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 InkPicture.
private void ClearAppGestures()
{
ApplicationGesture test = ApplicationGesture.NoGesture;
System.Array theGestureIds = System.Enum.GetValues(test.GetType());
foreach (ApplicationGesture theGestureId in theGestureIds)
{
theInkPicture.SetGestureStatus(theGestureId, false);
}
}
}
}
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 an InkPicture control, theInkPicture
, to the main form, add a status bar, theStatusBar
, to the main form, and then add the following code.
[Visual Basic]
Imports Microsoft.Ink
Public Class Form1
Inherits System.Windows.Forms.Form
#Region " Windows Form Designer generated code "
'This contains the standard generated form code
Friend theStatusBar As System.Windows.Forms.StatusBar
Friend theInkPicture As Microsoft.Ink.InkPicture
'...
#End Region
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'Set the InkOverlay to collect both ink and gestures.
theInkPicture.CollectionMode = CollectionMode.InkAndGesture
'Clear interest in all of the application gestures
ClearAppGestures()
'Set the interest in only two gestures.
theInkPicture.SetGestureStatus(ApplicationGesture.ChevronDown, True)
theInkPicture.SetGestureStatus(ApplicationGesture.ChevronUp, True)
'Add the handlers for application and system gestures.
AddHandler theInkPicture.Gesture, AddressOf Gesture_Event
AddHandler theInkPicture.SystemGesture, AddressOf SystemGesture_Event
theInkPicture.InkEnabled = 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 InkOverlay 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
theInkPicture.SetGestureStatus(theGestureId, False)
Next
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
InkPicture Class
InkPicture Members
Microsoft.Ink Namespace
ApplicationGesture
InkCollectorGestureEventArgs
InkOverlayEditingMode
InkPicture.SetGestureStatus