Freigeben über


InkCollectorNewPacketsEventHandler-Delegat

Stellt die Methode dar, die das NewPackets-Ereignis eines InkCollector-Objekts behandelt.

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

Syntax

'Declaration
Public Delegate Sub InkCollectorNewPacketsEventHandler ( _
    sender As Object, _
    e As InkCollectorNewPacketsEventArgs _
)
'Usage
Dim instance As New InkCollectorNewPacketsEventHandler(AddressOf HandlerMethod)
public delegate void InkCollectorNewPacketsEventHandler(
    Object sender,
    InkCollectorNewPacketsEventArgs e
)
public delegate void InkCollectorNewPacketsEventHandler(
    Object^ sender, 
    InkCollectorNewPacketsEventArgs^ e
)
/** @delegate */
public delegate void InkCollectorNewPacketsEventHandler(
    Object sender,
    InkCollectorNewPacketsEventArgs e
)
JScript unterstützt keine Delegaten.

Parameter

Hinweise

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 im verwalteten Code aktiviert, wenn Sie einen Ereignishandler hinzufügen.

Pakete werden empfangen, während ein Strich erfasst wird. Paketereignisse treten schnell auf; ein NewPackets-Ereignishandler muss schnell sein, sonst leidet die Leistung von Freihandeingaben.

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

Microsoft.Ink-Namespace

Cursor

InkCollectorNewInAirPacketsEventHandler

Stroke