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
Remarque : |
---|
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.
Supprimer le trait dans l'événement Stroke.
Traiter le mouvement dans l'événement Gesture.
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