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
Remarque : |
---|
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 :
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():
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