Freigeben über


InkPicture.NewPackets-Ereignis

Tritt ein, wenn das InkPicture-Steuerelement Pakete empfängt.

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

Syntax

'Declaration
Public Event NewPackets As InkCollectorNewPacketsEventHandler
'Usage
Dim instance As InkPicture
Dim handler As InkCollectorNewPacketsEventHandler

AddHandler instance.NewPackets, handler
public event InkCollectorNewPacketsEventHandler NewPackets
public:
 event InkCollectorNewPacketsEventHandler^ NewPackets {
    void add (InkCollectorNewPacketsEventHandler^ value);
    void remove (InkCollectorNewPacketsEventHandler^ value);
}
/** @event */
public void add_NewPackets (InkCollectorNewPacketsEventHandler value)
/** @event */
public void remove_NewPackets (InkCollectorNewPacketsEventHandler value)
JScript unterstützt keine Ereignisse.

Hinweise

Das InkPicture-Steuerelement empfängt ein Paket, während ein Strich erfasst wird. Paketereignisse treten schnell auf; ein NewPackets-Ereignishandler muss schnell sein, sonst leidet die Leistung.

Der Ereignishandler empfängt ein Argument vom Typ InkCollectorNewPacketsEventArgs, das Daten zu diesem Ereignis enthält.

Beim Erstellen eines InkCollectorNewPacketsEventHandler-Delegaten bestimmen Sie die Methode für die Ereignisbehandlung. Um dem Ereignishandler das Ereignis zuzuordnen, fügen Sie dem Ereignis eine Instanz des Delegaten hinzu. Der Ereignishandler wird bei jedem Eintreten des Ereignisses aufgerufen, sofern der Delegat nicht entfernt wird. Aus Leistungsgründen ist das Standardinteresse an einem Ereignis deaktiviert, es wird jedoch automatisch aktiviert, wenn Sie einen Ereignishandler hinzufügen.

Dieses Ereignis kann sich nachteilig auf das Verhalten von Freihandeingaben auswirken, wenn der Umfang des in den Ereignishandlern ausgeführten Codes zu groß ist.

Beispiele

In diesem Beispiel wird veranschaulicht, wie Sie das CursorInRange-Ereignis und das NewPackets-Ereignis abonnieren können, um Daten über den bei der Freihandeinhabe ausgeübten Druck zu erhalten und diese Informationen zum Bearbeiten eines DrawingAttributes-Objekts zu verwenden.

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

InkPicture-Klasse

InkPicture-Member

Microsoft.Ink-Namespace

Cursor

InkCollectorNewPacketsEventArgs

InkPicture.DesiredPacketDescription

InkPicture.NewPackets