Freigeben über


InkCollector.DesiredPacketDescription-Eigenschaft

Ruft das Interesse an Aspekten des Pakets ab, das den Freihandeingaben zugeordnet ist, die auf dem InkCollector-Objekt gezeichnet werden, oder legt dieses Interesse fest.

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

Syntax

'Declaration
Public Property DesiredPacketDescription As Guid()
'Usage
Dim instance As InkCollector
Dim value As Guid()

value = instance.DesiredPacketDescription

instance.DesiredPacketDescription = value
public Guid[] DesiredPacketDescription { get; set; }
public:
property array<Guid>^ DesiredPacketDescription {
    array<Guid>^ get ();
    void set (array<Guid>^ value);
}
/** @property */
public Guid[] get_DesiredPacketDescription()
/** @property */
public  void set_DesiredPacketDescription(Guid[] value)
public function get DesiredPacketDescription () : Guid[]
public function set DesiredPacketDescription (value : Guid[])

Eigenschaftenwert

Typ: array<System.Guid[]
Das Array der Guid-Objekte, die einen Aspekt des Pakets darstellen, das den Freihandeingaben zugeordnet ist, die auf dem InkCollector-Objekt gezeichnet werden.

Hinweise

Die Paketbeschreibung ist ein Array von Guid-Objekten des PacketProperty-Objekts.

DesiredPacketDescription enthält in der Standardeinstellung X, Y und NormalPressure des PacketProperty-Objekts. Wenn Sie DesiredPacketDescription auf etwas Anderes festgelegt haben, werden X und Y ebenfalls hinzugefügt. Wenn Sie z. B. DesiredPacketDescription nur auf ButtonPressure festlegen, wird {X, Y, ButtonPressure} und nicht nur {ButtonPressure} zurückgegeben.

Wenn DesiredPacketDescription auf einen Wert festgelegt ist, der PacketStatus umfasst, wird PacketStatus an der dritten Position hinzugefügt. Wenn Sie z. B. DesiredPacketDescription auf (a, b, c, d, PacketStatus, e, f) festlegen, wird (X, Y, PacketStatus, a, b, c, d, e, f) zurückgegeben.

Im Multitablet-Modus ist dies die Paketbeschreibung für alle Tablettgeräte. Wenn eines der Geräte die Description-Eigenschaft eines bekannten Pakets nicht unterstützt, werden die Eigenschaftsdaten nicht zurückgegeben.

Änderungen an dieser Eigenschaft haben keine Auswirkungen auf eingehende Paketdaten, bis die Enabled-Eigenschaft von false in true geändert wird.

Beispiele

Das folgende Beispiel zeigt, wie Sie mit der DesiredPacketDescription-Eigenschaft Interesse an bestimmten Guid-Objekten des PacketProperty-Objekts ausdrücken und die verfügbar gemachten Paketeigenschaften anschließend während des NewPackets-Ereignisses verwenden.

Zuerst wird die DesiredPacketDescription-Eigenschaft initialisiert, und die Ereignishandler werden zugewiesen.

' Express interest in PacketStatus, TimerTick, and NormalPressure
' X and Y will be added automatically
Dim PacketDesc As Guid() = New Guid() _
    { _
        PacketProperty.PacketStatus, _
        PacketProperty.TimerTick, _
        PacketProperty.NormalPressure _
    }

' mInkObject can be InkCollector, InkOverlay, or InkPicture
mInkObject.DesiredPacketDescription = PacketDesc
' assign event handlers
AddHandler mInkObject.CursorInRange, New InkCollectorCursorInRangeEventHandler(AddressOf mInkObject_CursorInRange)
AddHandler mInkObject.NewPackets, New InkCollectorNewPacketsEventHandler(AddressOf mInkObject_NewPackets)
// Express interest in PacketStatus, TimerTick, and NormalPressure
// X and Y will be added automatically
Guid[] PacketDesc = new Guid[] 
{
    PacketProperty.PacketStatus,
    PacketProperty.TimerTick,
    PacketProperty.NormalPressure
};
// mInkObject can be InkCollector, InkOverlay, or InkPicture
mInkObject.DesiredPacketDescription = PacketDesc;
// assign event handlers
mInkObject.CursorInRange += new InkCollectorCursorInRangeEventHandler(mInkObject_CursorInRange);
mInkObject.NewPackets += new InkCollectorNewPacketsEventHandler(mInkObject_NewPackets);

Beim Auslösen des CursorInRange-Ereignisses wird überprüft, ob das InkCollector-Objekt zum ersten Mal Kontakt mit diesem Cursor-Objekt hat. Wenn dies der Fall ist, wird die DrawingAttributes-Eigenschaft einem Klon der DefaultDrawingAttributes-Eigenschaft zugewiesen. Hierdurch wird verhindert, dass durch den anschließenden Zugriff auf die DrawingAttributes-Eigenschaft eine NULL-Verweisausnahme ausgelöst wird.

Private Sub mInkObject_CursorInRange(ByVal sender As Object, ByVal e As InkCollectorCursorInRangeEventArgs)
    Const MOUSE_CURSOR_ID As Integer = 1
    If e.NewCursor Then
        ' mInkObject can be InkCollector, InkOverlay, or InkPicture
        e.Cursor.DrawingAttributes = mInkObject.DefaultDrawingAttributes.Clone()
        ' if this cursor is the mouse, we'll set color to red
        If (MOUSE_CURSOR_ID = e.Cursor.Id) Then
            e.Cursor.DrawingAttributes.Color = Color.Red
        End If

    End If
End Sub
private void mInkObject_CursorInRange(object sender, InkCollectorCursorInRangeEventArgs e)
{
    const int MOUSE_CURSOR_ID = 1;

    if (e.NewCursor)
    {
        // mInkObject can be InkCollector, InkOverlay, or InkPicture
        e.Cursor.DrawingAttributes = mInkObject.DefaultDrawingAttributes.Clone();
        // if this cursor is the mouse, we'll set color to red
        if (MOUSE_CURSOR_ID == e.Cursor.Id)
        {
            e.Cursor.DrawingAttributes.Color = Color.Red;
        }
    }
}

Beim Auslösen des NewPackets-Ereignisses wird überprüft, ob NormalPressure in den Paketdaten enthalten ist. Wenn dies der Fall ist, werden Druckinformationen in einer Statusbezeichnung angezeigt, und die DrawingAttributes-Eigenschaft wird geändert.

Private Sub mInkObject_NewPackets(ByVal sender As Object, ByVal e As InkCollectorNewPacketsEventArgs)

    ' find the NormalPressure PacketProperty
    ' Set NormalPressure to -1 if not there, as some digitizers won't support it
    Dim PacketDesc As Guid() = e.Stroke.PacketDescription
    Dim NormalPressure As Integer = -1

    For k As Integer = 0 To PacketDesc.Length - 1
        If PacketDesc(k) = PacketProperty.NormalPressure Then
            ' for simplicity, in case of multiple packets, use the first packet only
            NormalPressure = e.PacketData(k)
        End If
    Next k

    ' If we have the NormalPressure information
    ' change DrawingAttributes according to the NormalPressure
    ' Note that the change does not take effect until the next stroke
    If NormalPressure <> -1 Then
        ' display the pressure on a status label
        Me.statusLabelPressure.Text = NormalPressure.ToString()
        e.Cursor.DrawingAttributes.Width = NormalPressure * 4
        ' if pressure is above 127, change color to Red
        If NormalPressure > 127 Then
            e.Cursor.DrawingAttributes.Color = Color.Red
        Else
            e.Cursor.DrawingAttributes.Color = mInkObject.DefaultDrawingAttributes.Color
        End If
    End If

End Sub
private void mInkObject_NewPackets(object sender, InkCollectorNewPacketsEventArgs e)
{
    // find the NormalPressure PacketProperty
    // Set NormalPressure to -1 if not there, as some digitizers won't support it
    Guid[] PacketDesc = e.Stroke.PacketDescription;
    int NormalPressure = -1;
    for (int k = 0; k < PacketDesc.Length; k++)
    {
        if (PacketDesc[k] == PacketProperty.NormalPressure)
        {
            // for simplicity, in case of multiple packets, use the first packet only
            NormalPressure = e.PacketData[k];
        }
    }

    // If we have the NormalPressure information
    // change DrawingAttributes according to the NormalPressure
    // Note that the change does not take effect until the next stroke
    if (NormalPressure != -1)
    {
        // display the pressure on a status label
        this.statusLabelPressure.Text = NormalPressure.ToString();
        e.Cursor.DrawingAttributes.Width = NormalPressure * 4;
        // if pressure is above 127, change color to Red
        if (NormalPressure > 127)
        {
            e.Cursor.DrawingAttributes.Color = Color.Red;
        }
        else
        {
            e.Cursor.DrawingAttributes.Color = mInkObject.DefaultDrawingAttributes.Color;
        }
    }
}

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

PacketProperty

Tablet