Partager via


InkCollector.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
Public Property CollectionMode As CollectionMode
'Utilisation
Dim instance As InkCollector
Dim value As CollectionMode

value = instance.CollectionMode

instance.CollectionMode = value
public CollectionMode CollectionMode { get; set; }
public:
property CollectionMode CollectionMode {
    CollectionMode get ();
    void set (CollectionMode value);
}
/** @property */
public CollectionMode get_CollectionMode()
/** @property */
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

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

L'objet InkCollector 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 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 le module de reconnaissance, le mode ne peut pas avoir la valeur GestureOnly ou InkAndGesture.

Les problèmes suivants se produisent pour chacune des valeurs de la propriété 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 InkCollector 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.

  • L'entrée manuscrite est toujours supprimée.

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 InkCollector 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 InkCollector à 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 InkAndGesture et l'intérêt d'un objet InkCollector dans un mouvement connu est défini (en appelant la méthode SetGestureStatus). Si l'entrée manuscrite tracée est semblable au mouvement connu et que ce dernier figure dans la liste des propositions de substitution du module de reconnaissance, l'événement Gesture se déclenche et entraîne la disparition de l'entrée manuscrite, 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 vous modifier par programme. La reconnaissance de mouvement est plus rapide en mode InkAndGesture. Pour collecter uniquement des mouvements et empêcher la collecte d'entrée manuscrite en mode InkAndGesture, vous pouvez :

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

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

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

  3. 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():
        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)
        {
            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 InkCollector object.
        private void ClearAppGestures(InkCollector theInkCollector)
        {
            ApplicationGesture test = ApplicationGesture.NoGesture;
            Array theGestures = System.Enum.GetValues(test.GetType());
            foreach (ApplicationGesture theGesture in theGestures)
            {
                theInkCollector.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 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 our 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 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 InkCollector 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
            theInkCollector.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

InkCollector, classe

Membres InkCollector

Microsoft.Ink, espace de noms

InkCollector.Enabled

InkCollector.CollectingInk

CollectionMode