Partager via


InkCollector.DesiredPacketDescription, propriété

Mise à jour : November 2007

Obtient ou définit un intérêt dans les aspects du paquet associé à l'entrée manuscrite tracée sur l'objet InkCollector.

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

Syntaxe

'Déclaration
Public Property DesiredPacketDescription As Guid()
'Utilisation
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[])

Valeur de propriété

Type : array<System.Guid[]
Tableaux d'objets Guid (page pouvant être en anglais) représentant chacun un aspect du paquet associé à l'entrée manuscrite tracée sur l'objet InkCollector.

Notes

La description de paquet est un tableau d'objets Guid (page pouvant être en anglais) de l'objet PacketProperty.

Par défaut, la propriété DesiredPacketDescription contient X, Yet NormalPressure à partir de l'objet PacketProperty. Si vous affectez une autre valeur à la propriété DesiredPacketDescription, X et Y seront également ajoutés. Par exemple, si vous affectez la valeur ButtonPressure à la propriété DesiredPacketDescription uniquement, une commande get retourne {X, Y, ButtonPressure}, et pas seulement {ButtonPressure}.

Lorsque la propriété DesiredPacketDescription a une valeur qui inclut PacketStatus, PacketStatus est ajouté en troisième position. Par exemple, si vous affectez (a, b, c, d, PacketStatus, e, f) à la propriété DesiredPacketDescription, une commande get retourne (X, Y, PacketStatus, a, b, c, d, e, f).

En mode multitablet, il s'agit de la description de paquet pour tous les périphériques de la tablette. Si l'un des périphériques ne prend pas en charge une propriété de description de paquet connue, les données de propriété ne sont pas retournées.

Les modifications apportées à cette propriété n'affectent pas les données de paquet entrantes jusqu'à ce que la propriété Enabled passe de false à true.

Exemples

L'exemple suivant montre comment utiliser la propriété DesiredPacketDescription pour exprimer l'intérêt dans des objets Guid (page pouvant être en anglais) spécifiques de l'objet PacketProperty, puis utiliser les propriétés de paquet exposées pendant l'événement NewPackets.

En premier lieu, la propriété DesiredPacketDescription est initialisée et les gestionnaires d'événements sont assignés.

' 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);

Lorsque l'événement CursorInRange se déclenche, un contrôle est effectué pour déterminer s'il s'agit du premier contact de l'objet InkCollector avec cet objet Cursor spécifique. Si c'est le cas, un clone de la propriété DefaultDrawingAttributes est assigné à la propriété DrawingAttributes. 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

InkCollector, classe

Membres InkCollector

Microsoft.Ink, espace de noms

PacketProperty

Tablet