Compartir a través de


InkOverlay.CollectionMode (Propiedad)

Actualización: noviembre 2007

Obtiene o establece el modo de recopilación que determina si la entrada manuscrita, el movimiento o ambos se reconocen cuando escribe el usuario.

Espacio de nombres:  Microsoft.Ink
Ensamblado:  Microsoft.Ink (en Microsoft.Ink.dll)

Sintaxis

'Declaración
<BrowsableAttribute(True)> _
Public Property CollectionMode As CollectionMode
'Uso
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)

Valor de propiedad

Tipo: Microsoft.Ink.CollectionMode
Objeto CollectionMode que determina si la entrada manuscrita, el movimiento o ambos se reconocen cuando escribe el usuario.

Comentarios

Nota

El objeto InkOverlay genera un error si intenta cambiar la propiedad CollectionMode mientras se recopila la entrada manuscrita. Para evitar este conflicto, compruebe la propiedad CollectingInk antes de cambiar la propiedad CollectionMode.

Para obtener una lista de los modos que puede utilizar, vea la enumeración CollectionMode. Sin embargo, si se utiliza la propiedad CollectionMode en un sistema que tiene instalado el SDK para Tablet PC pero que no tiene instalados reconocedores, el modo no se puede establecer en GestureOnly ni en InkAndGesture.

Se producen los siguientes comportamientos para cada uno de los valores CollectionMode.

Modo InkOnly

  • Sólo se recopila la entrada manuscrita; no los movimientos.

  • El interés del evento Gesture se establece en false (todos los demás intereses del evento permanecen como estaban).

Modo GestureOnly

  • Sólo se recopilan los movimientos; no la entrada manuscrita. Los trazos se eliminan una vez enviados al reconocedor de movimiento.

  • El interés del evento Gesture se establece en true (todos los demás intereses del evento permanecen como estaban).

  • El objeto InkOverlay no desencadena el trazo ni los eventos relacionados con el paquete siguientes: los eventos CursorDown, Stroke, NewInAirPackets y NewPackets.

  • Desencadenador de eventos de cursor.

Modo InkAndGesture

  • Se recopila la entrada manuscrita y los movimientos.

  • Sólo se reconocen los movimientos de un único trazo.

  • El interés del evento Gesture se establece en true (todos los demás intereses del evento permanecen como estaban).

  • El evento Gesture se desencadena primero, permitiéndole aceptar o cancelar el movimiento cuando se invoca el controlador de eventos OnGesture del objeto InkOverlay. Para cancelar el movimiento, establezca la propiedad Cancel heredada del objeto InkCollectorGestureEventArgs en true. Cancelar el movimiento obliga al objeto InkOverlay a recopilar la entrada manuscrita.

Cambiar el modo de recopilación, no modifica el estado de los movimientos individuales.

Se puede producir un comportamiento no deseado si la propiedad CollectionMode se establece en GestureOnly y se establece el interés de un objeto InkOverlay en un movimiento conocido (llamando al método SetGestureStatus). Si dibuja entrada manuscrita que tiene algún parecido con el movimiento conocido y éste figura en la lista de alternativas del reconocedor, se desencadena el evento Gesture y desaparece la entrada manuscrita, aun cuando el movimiento no sea la alternativa principal. Para evitar que la entrada manuscrita desaparezca si se desea recopilar la entrada manuscrita en lugar del movimiento, cancele la recopilación del movimiento y establezca la propiedad Cancel heredada del objeto InkCollectorGestureEventArgs en true.

Si la propiedad CollectionMode se establece en GestureOnly, el tiempo de espera que transcurre entre el momento en que el usuario agrega un movimiento y el momento en que se produce el evento Gesture es un valor fijo que no puede modificar mediante programación. El reconocimiento de movimientos es más rápido en el modo InkAndGesture. Para recopilar sólo los movimientos y evitar la recopilación de entrada manuscrita mientras se está en el modo InkAndGesture, puede hacer lo siguiente:

  1. Establezca la propiedad CollectionMode en InkAndGesture.

  2. En el evento Stroke elimine el trazo.

  3. En el evento Gesture procese el movimiento.

  4. Para evitar el flujo de entradas manuscritas durante el movimiento, establezca la propiedad DynamicRendering en false.

Ejemplos

En este ejemplo de C# se muestra información del evento de movimiento en la barra de estado de la ventana de formulario principal. Comenzando por una aplicación genérica creada, agregue un control StatusBar, statusBar1, al formulario principal y el código siguiente.

//...
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);
            }
        }
    }
}

En este ejemplo de Microsoft Visual Basic .NET se muestra información del evento de movimiento en la barra de estado de la ventana de formulario principal. Comenzando por una aplicación genérica creada, agregue un control StatusBar, statusBar1, al formulario principal y el código siguiente.

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

Plataformas

Windows Vista

.NET Framework y .NET Compact Framework no admiten todas las versiones de cada plataforma. Para obtener una lista de las versiones compatibles, vea Requisitos de sistema de .NET Framework.

Información de versión

.NET Framework

Compatible con: 3.0

Vea también

Referencia

InkOverlay (Clase)

InkOverlay (Miembros)

Microsoft.Ink (Espacio de nombres)

InkOverlay.Enabled

InkOverlay.CollectingInk

CollectionMode