Partager via


InkPicture.NewPackets, événement

Mise à jour : November 2007

Se produit lorsque le contrôle InkPicture reçoit des paquets.

Espace de noms :  Microsoft.Ink
Assembly :  Microsoft.Ink (dans Microsoft.Ink.dll)

Syntaxe

'Déclaration
Public Event NewPackets As InkCollectorNewPacketsEventHandler
'Utilisation
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 ne prend pas en charge les événements.

Notes

Le contrôle InkPicture reçoit un paquet lorsqu'un trait est collecté. Les événements de paquet se déclenchent rapidement, un gestionnaire d'événements NewPackets doit donc être réactif pour ne pas diminuer les performances.

Le gestionnaire d'événements reçoit un argument de type InkCollectorNewPacketsEventArgs qui contient des données concernant cet événement.

Lorsque vous créez un délégué InkCollectorNewPacketsEventHandler, vous identifiez la méthode qui gère l'événement. Pour associer l'événement au gestionnaire d'événements, ajoutez une instance du délégué à l'événement. Le gestionnaire d'événements est appelé chaque fois qu'un événement se produit, sauf si vous supprimez le délégué. Pour des raisons de performances, l'intérêt d'événement par défaut est désactivé. Toutefois, il est automatiquement activé si vous ajoutez un gestionnaire d'événements.

Cet événement peut produire un effet indésirable sur les performances d'entrée manuscrite si les gestionnaires d'événements exécutent trop de code.

Exemples

Cet exemple montre comment s'abonner à l'événement CursorInRange, comment l'événement NewPackets obtient des données relatives à la pression de l'entrée manuscrite et comment il utilise ces informations pour manipuler un objet DrawingAttributes.

Lorsque l'événement CursorInRange se déclenche, un contrôle est effectué pour déterminer si c'est la première fois que l'objet InkCollector entre en contact avec cet objet Cursor spécifique. Si c'est le cas, la propriété DrawingAttributes est assignée à un clone de la propriété DefaultDrawingAttributes. Ainsi, lors de l'accès suivant à la propriété, DrawingAttributes aucune exception de référence null n'est levée.

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;
        }
    }
}

Lorsque l'événement NewPackets se déclenche, un contrôle est effectué pour déterminer si NormalPressure est inclus dans les données de paquet. Dans ce cas, les informations de pression sont affichées sur une étiquette d'état, et la propriété DrawingAttributes est modifiée.

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;
        }
    }
}

Plateformes

Windows Vista

Le .NET Framework et le .NET Compact Framework ne prennent pas en charge toutes les versions de chaque plateforme. Pour obtenir la liste des versions prises en charge, consultez Configuration requise du .NET Framework.

Informations de version

.NET Framework

Pris en charge dans : 3.0

Voir aussi

Référence

InkPicture, classe

Membres InkPicture

Microsoft.Ink, espace de noms

Cursor

InkCollectorNewPacketsEventArgs

InkPicture.DesiredPacketDescription

InkPicture.NewPackets