Proprietà InkOverlay.CollectionMode
Aggiornamento: novembre 2007
Ottiene o imposta la modalità di raccolta che determina se l'input penna, il movimento o entrambi vengono riconosciuti mentre l'utente scrive.
Spazio dei nomi: Microsoft.Ink
Assembly: Microsoft.Ink (in Microsoft.Ink.dll)
Sintassi
'Dichiarazione
<BrowsableAttribute(True)> _
Public Property CollectionMode As CollectionMode
'Utilizzo
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)
Valore proprietà
Tipo: Microsoft.Ink.CollectionMode
Oggetto CollectionMode che determina se l'input penna, il movimento o entrambi vengono riconosciuti mentre l'utente scrive.
Note
Nota
L'oggetto InkOverlay genera un errore se si tenta di modificare la proprietà CollectionMode mentre l'input penna viene raccolto. Per evitare questo conflitto, controllare la proprietà CollectingInk prima di modificare la proprietà CollectionMode.
Per un elenco delle modalità utilizzabili, vedere l'enumerazione CollectionMode. Tuttavia, in caso di utilizzo della proprietà CollectionMode in un sistema in cui è installato l'SDK di Tablet PC, ma non i sistemi di riconoscimento, la modalità non può essere impostata su GestureOnly o su InkAndGesture.
Si verificano i comportamenti seguenti per ognuno dei valori CollectionMode.
Modalità InkOnly
Viene raccolto solo l'input penna, non i movimenti.
L'interesse dell'evento Gesture è impostato su false (tutti gli altri interessi dell'evento rimangono inalterati).
Modalità GestureOnly
Vengono raccolti solo i movimenti, non l'input penna. I tratti vengono eliminati dopo l'invio al sistema di riconoscimento del movimento.
L'interesse dell'evento Gesture è impostato su true (tutti gli altri interessi dell'evento rimangono inalterati).
L'oggetto InkOverlay non genera i seguenti eventi correlati al tratto e al pacchetto: CursorDown, Stroke, NewPackets e NewInAirPackets.
Vengono generati eventi del cursore.
Modalità InkAndGesture
Vengono raccolti sia l'input penna, sia i movimenti.
Vengono riconosciuti solo i movimenti a tratto singolo.
L'interesse dell'evento Gesture è impostato su true (tutti gli altri interessi dell'evento rimangono inalterati).
Viene generato prima l'evento Gesture, che consente di accettare o annullare il movimento quando si richiama il gestore eventi OnGesture dell'oggetto InkOverlay. Per annullare il movimento, impostare la proprietà Cancel ereditata dell'oggetto InkCollectorGestureEventArgs su true. Con l'annullamento del movimento si impone all'oggetto InkOverlay di raccogliere l'input penna.
La modifica della modalità di raccolta non altera lo stato dei singoli movimenti.
Potrebbero verificarsi comportamenti imprevisti quando la proprietà CollectionMode è impostata su GestureOnly e si esprime un interesse dell'oggetto InkOverlay in un movimento noto (tramite una chiamata al metodo SetGestureStatus). Se si disegna un input penna simile al movimento noto e quest'ultimo è incluso nell'elenco di alternative del sistema di riconoscimento, viene generato l'evento Gesture e l'input penna scompare, anche se tale movimento non rappresenta la prima alternativa. Per evitare la scomparsa dell'input penna quando si desidera raccogliere l'input penna anziché il movimento, annullare la raccolta del movimento e impostare la proprietà Cancel ereditata dell'oggetto InkCollectorGestureEventArgs su true.
Quando la proprietà CollectionMode è impostata su GestureOnly, il timeout tra l'aggiunta di un movimento da parte dell'utente e la generazione dell'evento Gesture è un valore fisso che non può essere modificato a livello di codice. Il riconoscimento del movimento è più veloce in modalità InkAndGesture. Per raccogliere solo i movimenti e impedire la raccolta dell'input penna nella modalità InkAndGesture, è possibile:
Impostare la proprietà CollectionMode su InkAndGesture.
Nell'evento Stroke, eliminare il tratto.
Nell'evento Gesture, elaborare il movimento.
Impostare l'oggetto DynamicRendering su false per evitare il flusso di input penna durante l'esecuzione di movimenti.
Esempi
In questo esempio di C# vengono visualizzate le informazioni sull'evento di movimento nella barra di stato della finestra del form principale. A partire da un'applicazione generata generica, aggiungere un controllo StatusBar, statusBar1, al form principale e al codice seguente.
//...
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);
}
}
}
}
In questo esempio di Microsoft Visual Basic .NET vengono visualizzate le informazioni sull'evento di movimento nella barra di stato della finestra del form principale. A partire da un'applicazione generata generica, aggiungere un controllo StatusBar, statusBar1, al form principale e al codice seguente.
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
Piattaforme
Windows Vista
.NET Framework e .NET Compact Framework non supportano tutte le versioni di ciascuna piattaforma. Per un elenco delle versioni supportate, vedere Requisiti di sistema di .NET Framework.
Informazioni sulla versione
.NET Framework
Supportato in: 3.0