Partager via


InkOverlay.CollectionMode, propriété

Mise à jour : November 2007

Obtient ou définit le mode de collecte qui indique si l'entrée manuscrite, le mouvement, ou les deux, sont reconnus à mesure que l'utilisateur écrit.

Espace de noms :  Microsoft.Ink
Assembly :  Microsoft.Ink (dans Microsoft.Ink.dll)

Syntaxe

'Déclaration
<BrowsableAttribute(True)> _
Public Property CollectionMode As CollectionMode
'Utilisation
Dim instance As InkOverlay
Dim value As CollectionMode

value = instance.CollectionMode

instance.CollectionMode = value
[BrowsableAttribute(true)]
public CollectionMode CollectionMode { get; set; }
[BrowsableAttribute(true)]
public:
property CollectionMode CollectionMode {
    CollectionMode get ();
    void set (CollectionMode value);
}
/** @property */
/** @attribute BrowsableAttribute(true) */
public CollectionMode get_CollectionMode()
/** @property */
/** @attribute BrowsableAttribute(true) */
public  void set_CollectionMode(CollectionMode value)
public function get CollectionMode () : CollectionMode
public function set CollectionMode (value : CollectionMode)

Valeur de propriété

Type : Microsoft.Ink.CollectionMode
CollectionMode qui détermine si l'entrée manuscrite ou les mouvements, ou les deux, sont reconnus lorsque l'utilisateur écrit.

Notes

ms582161.alert_note(fr-fr,VS.90).gifRemarque :

L'objet InkOverlay génère une erreur si vous essayez de modifier la propriété CollectionMode pendant la collecte d'entrée manuscrite. Pour éviter ce conflit, vérifiez la propriété CollectingInk du formulaire avant de modifier la propriété CollectionMode.

Pour obtenir la liste des modes que vous pouvez utiliser, consultez l'énumération CollectionMode. Toutefois, lors de l'utilisation de la propriété CollectionMode sur un système où le Kit de développement logiciel (SDK) Tablet PC est installé, mais pas les modules de reconnaissance, le mode ne peut pas avoir la valeur GestureOnly ou InkAndGesture.

Les problèmes suivants se produisent pour chacune des valeurs CollectionMode.

Mode InkOnly

  • Seule l'entrée manuscrite est collectée, les mouvements ne le sont pas.

  • L'intérêt d'événement Gesture a la valeur false (tous les autres intérêts d'événement restent tels quels).

Mode GestureOnly

  • Seuls les mouvements sont collectés; l'entrée manuscrite ne l'est pas. Les traits sont supprimés après avoir été envoyés au mode de reconnaissance de mouvement.

  • L'intérêt d'événement Gesture a la valeur true (tous les autres intérêts d'événement restent tels quels).

  • L'objet InkOverlay ne déclenche pas les événements de trait et de paquet associés qui suivent : événements CursorDown, Stroke, NewPackets et NewInAirPackets.

  • Les événements de curseur se déclenchent.

Mode InkAndGesture

  • L'entrée manuscrite et les mouvements sont collectés.

  • Seuls les mouvements monotraits sont reconnus.

  • L'intérêt d'événement Gesture a la valeur true (tous les autres intérêts d'événement restent tels quels).

  • L'événement Gesture se déclenche en premier, vous permettant d'accepter ou d'annuler le mouvement lorsque le gestionnaire d'événements OnGesture de l'objet InkOverlay est appelé. Pour annuler le mouvement, affectez la valeur true à la propriété Cancel (page pouvant être en anglais) de l'objet InkCollectorGestureEventArgs. L'annulation du mouvement force l'objet InkOverlay à collecter l'entrée manuscrite.

La modification du mode de collecte ne modifie pas l'état des mouvements individuels.

Un comportement non désiré peut se produire lorsque la propriété CollectionMode a pour valeur GestureOnly et un intérêt d'objet InkOverlay dans un mouvement connu est défini (en appelant la méthode SetGestureStatus). Si vous tracez une entrée manuscrite qui ressemble au mouvement connu et que le mouvement connu se trouve dans la liste du module de reconnaissance de propositions de substitution, l'événement Gesture se déclenche et l'entrée manuscrite disparaît, même si le mouvement n'est pas la meilleure proposition de substitution. Pour éviter la disparition de l'entrée manuscrite lorsque vous souhaitez collecter l'entrée manuscrite plutôt que le mouvement, annulez la collecte du mouvement et affectez la valeur true à la propriété Cancel (page pouvant être en anglais) héritée de l'objet InkCollectorGestureEventArgs.

Lorsque la propriété CollectionMode a la valeur GestureOnly, le délai d'attente entre le moment où un utilisateur ajoute un mouvement et celui où l'événement Gesture se produit est une valeur fixe que vous ne pouvez pas modifier par programme. La reconnaissance de mouvement est plus rapide en mode InkAndGesture. Pour ne collecter que des mouvements et empêcher la collecte d'entrée manuscrite en mode InkAndGesture, vous pouvez :

  1. Affecter la valeur InkAndGesture à la propriété CollectionMode.

  2. Supprimer le trait dans l'événement Stroke.

  3. Traiter le mouvement dans l'événement Gesture.

  4. Affecter la valeur false à la propriété DynamicRendering pour arrêter le flux d'entrée manuscrite pendant un mouvement.

Exemples

Cet exemple C# affiche des informations sur les événements de mouvement dans la barre d'état de la fenêtre du formulaire principal. En commençant par une application générée générique, ajoutez un contrôle StatusBar(page pouvant être en anglais), statusBar1, au formulaire principal, ainsi que le code suivant.

//...
using Microsoft.Ink;

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

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

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

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

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

Cet exemple Microsoft Visual Basic .NET affiche des informations d'événement de mouvement dans la barre d'état de la fenêtre du formulaire principal. En commençant par une application générée générique, ajoutez un contrôle StatusBar(page pouvant être en anglais), statusBar1, au formulaire principal, ainsi que le code suivant.

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

#Region " Windows Form Designer generated code "
'This contains the standard generated form code, with
'the addition of a Status Bar, StatusBar1.
#End Region

    Dim theInkOverlay As InkOverlay

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

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

    Private Sub SystemGesture_Event( _
        ByVal sender As Object, _
        ByVal e As InkCollectorSystemGestureEventArgs)
        StatusBar1.Text = "System: " + e.Id.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 theGestures As Array = System.Enum.GetValues(test.GetType())
        Dim theGesture As ApplicationGesture
        For Each theGesture In theGestures
            theInkOverlay.SetGestureStatus(theGesture, False)
        Next
    End Sub
End Class

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

Voir aussi

Référence

InkOverlay, classe

Membres InkOverlay

Microsoft.Ink, espace de noms

InkOverlay.Enabled

InkOverlay.CollectingInk

CollectionMode