Freigeben über


InkCollector.CollectionMode-Eigenschaft

Ruft den Erfassungsmodus ab, der bestimmt, ob Freihand und/oder Stiftbewegung während des Schreibens erkannt werden, oder legt diesen fest.

Namespace:  Microsoft.Ink
Assembly:  Microsoft.Ink (in Microsoft.Ink.dll)

Syntax

'Declaration
Public Property CollectionMode As CollectionMode
'Usage
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)

Eigenschaftenwert

Typ: Microsoft.Ink.CollectionMode
Der CollectionMode, der bestimmt, ob Freihand und/oder Stiftbewegung während des Schreibens erkannt werden.

Hinweise

Hinweis

Das InkCollector-Objekt generiert einen Fehler, wenn Sie versuchen, die CollectionMode-Eigenschaft während der Erfassung von Freihandeingaben zu ändern. Um diesen Konflikt zu vermeiden, überprüfen Sie die CollectingInk-Eigenschaft, bevor Sie die CollectionMode-Eigenschaft ändern.

Eine Liste der zulässigen Modi finden Sie unter der CollectionMode-Enumeration. Wenn Sie die CollectionMode-Eigenschaft jedoch auf einem System verwenden, auf dem das Tablet PC SDK, aber kein Erkennungsmodul installiert ist, kann der Modus nicht auf GestureOnly oder InkAndGesture festgelegt werden.

Die folgenden Verhaltensweisen treten für jeden der CollectionMode-Werte auf.

InkOnly-Modus

  • Es wird nur Freihand erfasst, keine Stiftbewegungen.

  • Das Gesture-Ereignisinteresse wird auf false festgelegt (alle anderen Ereignisinteressen bleiben unverändert).

GestureOnly-Modus

  • Es werden nur Stiftbewegungen erfasst, keine Freihand. Die Striche werden gelöscht, nachdem sie an die Stiftbewegungserkennung gesendet wurden.

  • Das Gesture-Ereignisinteresse wird auf true festgelegt (alle anderen Ereignisinteressen bleiben unverändert).

  • Das InkCollector-Objekt löst die folgenden strich- und paketbezogenen Ereignisse nicht aus: CursorDown, Stroke, NewPackets und NewInAirPackets.

  • Cursorereignisse werden ausgelöst.

  • Freihandeingaben werden immer gelöscht.

InkAndGesture-Modus

  • Es werden sowohl Freihand als auch Stiftbewegungen erfasst.

  • Es werden nur Stiftbewegungen in einem einzelnen Strich erkannt.

  • Das Gesture-Ereignisinteresse wird auf true festgelegt (alle anderen Ereignisinteressen bleiben unverändert).

  • Das Gesture-Ereignis wird zuerst ausgelöst und ermöglicht es Ihnen, die Stiftbewegung zu akzeptieren oder abzubrechen, wenn der OnGesture-Ereignishandler des InkCollector-Objekts aufgerufen wird. Legen Sie die geerbte Cancel-Eigenschaft des InkCollectorGestureEventArgs-Objekts auf true fest, um die Stiftbewegung abzubrechen. Der Abbruch der Stiftbewegung zwingt das InkCollector-Objekt, die Freihandeingaben zu erfassen.

Durch Ändern des Erfassungsmodus wird der Status der einzelnen Stiftbewegungen nicht geändert.

Unerwünschtes Verhalten kann auftreten, wenn die CollectionMode-Eigenschaft auf InkAndGesture und das Interesse eines InkCollector-Objekts an einer bekannten Stiftbewegung festgelegt ist (durch Aufruf der SetGestureStatus-Methode). Wenn Sie eine Freihandeingabe zeichnen, die der bekannten Stiftbewegung ähnelt und die bekannte Stiftbewegung in der Liste der Alternativen des Erkennungsmoduls aufgeführt ist, wird das Gesture-Ereignis ausgelöst, wodurch die Freihandeingabe verschwindet, selbst wenn es sich bei der Stiftbewegung nicht um die erste Alternative handelt. Um zu verhindern, dass die Freihandeingaben verloren gehen, wenn die Freihandeingaben und nicht die Stiftbewegungen erfasst werden sollen, brechen Sie die Erfassung der Stiftbewegungen ab, und legen Sie die geerbte Cancel-Eigenschaft des InkCollectorGestureEventArgs-Objekts auf true fest.

Wenn die CollectionMode-Eigenschaft auf GestureOnly festgelegt ist, ist das Timeout zwischen dem Zeitpunkt, zu dem ein Benutzer eine Stiftbewegung hinzufügt, und dem Zeitpunkt, zu dem das Gesture-Ereignis eintritt, ein fester Wert: Er kann nicht programmgesteuert geändert werden. Die Stiftbewegungserkennung ist im InkAndGesture-Modus schneller. Um nur Stiftbewegungen zu erfassen und die Erfassung von Freihandeingaben zu verhindern, während der InkAndGesture-Modus aktiv ist, können Sie:

Legen Sie die CollectionMode-Eigenschaft auf InkAndGesture fest

  1. Löschen Sie den Strich im Stroke-Ereignis.

  2. Verarbeiten Sie die Stiftbewegung im Gesture-Ereignis.

  3. DynamicRendering auf false festlegen, um den Fluss der Freihandeingaben bei Stiftbewegungen zu verhindern.

Beispiele

In diesem C#-Beispiel werden auf der Statusleiste des Hauptformularfensters Informationen über Stiftbewegungsereignisse angezeigt. Fügen Sie ausgehend von einer generisch generierten Anwendung dem Hauptformular und dem folgenden Code ein StatusBar-Steuerelement mit dem Namen statusBar1 hinzu.

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

In diesem Microsoft Visual Basic .NET-Beispiel werden auf der Statusleiste des Hauptformularfensters Informationen über Stiftbewegungsereignisse angezeigt. Fügen Sie ausgehend von einer generisch generierten Anwendung dem Hauptformular und dem folgenden Code ein StatusBar-Steuerelement mit dem Namen statusBar1 hinzu.

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

Plattformen

Windows Vista

.NET Framework und .NET Compact Framework unterstützen nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen für .NET Framework.

Versionsinformationen

.NET Framework

Unterstützt in: 3.0

Siehe auch

Referenz

InkCollector-Klasse

InkCollector-Member

Microsoft.Ink-Namespace

InkCollector.Enabled

InkCollector.CollectingInk

CollectionMode