Freigeben über


InkPicture.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
<BrowsableAttribute(True)> _
Public Property CollectionMode As CollectionMode
'Usage
Dim instance As InkPicture
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)

Eigenschaftenwert

Typ: Microsoft.Ink.CollectionMode
Einer der CollectionMode-Werte.

Hinweise

Hinweis

Das InkPicture-Steuerelement 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 InkPicture-Steuerelement löst die folgenden strich- und paketbezogenen Ereignisse nicht aus: CursorDown, Stroke, NewPackets und NewInAirPackets.

  • Cursorereignisse werden ausgelöst.

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 InkPicture-Steuerelements aufgerufen wird. Legen Sie die geerbte Cancel-Eigenschaft des InkCollectorGestureEventArgs-Objekts auf true fest, um die Stiftbewegung abzubrechen. Der Abbruch der Stiftbewegung zwingt das InkPicture-Steuerelement, die Freihandeingaben zu erfassen.

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

Unerwünschtes Verhalten kann eintreten, wenn die CollectionMode-Eigenschaft auf InkAndGesture und das Interesse eines InkPicture-Steuerelements an einer bekannten Stiftbewegung festgelegt ist (durch Aufrufen der SetGestureStatus-Methode). Wenn Sie eine Freihandeingabe zeichnen, die der bekannten Stiftbewegung gleicht und die bekannte Stiftbewegung in der Liste der Alternativen des Erkennungsmoduls aufgeführt ist, wird das Gesture-Ereignis ausgelöst und 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, der nicht programmgesteuert geändert werden kann. 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:

  1. Die CollectionMode-Eigenschaft auf InkAndGesture festlegen.

  2. Den Strich im Stroke-Ereignis löschen.

  3. Die Stiftbewegung im Gesture-Ereignis verarbeiten.

  4. 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 und ein InkPicture-Steuerelement mit dem Namen theInkPicture hinzu.

[C#]

//...
using Microsoft.Ink;

namespace CollectionMode_CS
{
    public class CollectionModeForm : System.Windows.Forms.Form
    {
        // ... The generated code will be here.
        //Add this code following the implementation of Main():

        private void CollectionModeForm_Load(object sender, System.EventArgs e)
        {
            // Initialize the InkPicture object.
            theInkPicture.CollectionMode = CollectionMode.InkAndGesture;
            ClearAppGestures();

            // Turn on interest in the ChevronDown application gesture.
            theInkPicture.SetGestureStatus(ApplicationGesture.ChevronDown, true);
            theInkPicture.SetGestureStatus(ApplicationGesture.ChevronUp, true);
            theInkPicture.Gesture += new InkCollectorGestureEventHandler(theInkPicture_Gesture);
            theInkPicture.SystemGesture +=
            new InkCollectorSystemGestureEventHandler(theInkPicture_SystemGesture);
            theInkPicture.Enabled = true;
        }

        private void theInkPicture_Gesture(object sender,
            Microsoft.Ink.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 theInkPicture_SystemGesture(object sender,
            Microsoft.Ink.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()
        {
        ApplicationGesture test = ApplicationGesture.NoGesture;
            Array theGestures = System.Enum.GetValues(test.GetType());
            foreach (ApplicationGesture theGesture in theGestures)
            {
               theInkPicture.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 und ein InkPicture-Steuerelement mit dem Namen theInkPicture hinzu.

Imports Microsoft.Ink

Public Class CollectionModeForm
    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, and an InkPicture control, the InkPicture.
#End Region

    Private Sub CollectionModeForm_Load(ByVal sender As System.Object, _
        ByVal e As System.EventArgs) Handles MyBase.Load
        'Set the InkPicture to collect both ink and gestures.
        theInkPicture.CollectionMode = CollectionMode.InkAndGesture
        'Clear interest in all of the application gestures
        ClearAppGestures()
        'Set our interest in only two gestures.
        theInkPicture.SetGestureStatus(ApplicationGesture.ChevronDown, True)
        theInkPicture.SetGestureStatus(ApplicationGesture.ChevronUp, True)
        'Add the handlers for application and system gestures.
        AddHandler theInkPicture.Gesture, AddressOf theInkPicture_Gesture
        AddHandler theInkPicture.SystemGesture, AddressOf theInkPicture_SystemGesture
        theInkPicture.Enabled = True
    End Sub

    Private Sub theInkPicture_Gesture(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 theInkPicture_SystemGesture( _
        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 InkPicture 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
            theInkPicture.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

InkPicture-Klasse

InkPicture-Member

Microsoft.Ink-Namespace

CollectionMode

InkPicture.Stroke

InkPicture.Gesture

InkPicture.CursorDown

InkPicture.NewPackets

InkPicture.NewInAirPackets

InkPicture.SetGestureStatus