Partager via


InkOverlay.DesiredPacketDescription, propriété

Mise à jour : November 2007

Obtient ou définit un intérêt dans les aspects des paquets associés à l'entrée manuscrite tracée sur l'objet InkOverlay.

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

Syntaxe

'Déclaration
<BrowsableAttribute(False)> _
Public Property DesiredPacketDescription As Guid()
'Utilisation
Dim instance As InkOverlay
Dim value As Guid()

value = instance.DesiredPacketDescription

instance.DesiredPacketDescription = value
[BrowsableAttribute(false)]
public Guid[] DesiredPacketDescription { get; set; }
[BrowsableAttribute(false)]
public:
property array<Guid>^ DesiredPacketDescription {
    array<Guid>^ get ();
    void set (array<Guid>^ value);
}
/** @property */
/** @attribute BrowsableAttribute(false) */
public Guid[] get_DesiredPacketDescription()
/** @property */
/** @attribute BrowsableAttribute(false) */
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[]
Tableau 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 InkOverlay.

Notes

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

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

Lorsque DesiredPacketDescription a une valeur qui inclut PacketStatus, PacketStatus est ajouté en troisième position. Par exemple, si vous définissez DesiredPacketDescription sur (a, b, c, d, PacketStatus, e, f), une commande get retourne (X, O, 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 de 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 affecté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 si c'est la première fois que l'objet InkOverlay est entré en contact avec cet objet Cursor spécifique. Dans ce 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

InkOverlay, classe

Membres InkOverlay

Microsoft.Ink, espace de noms

PacketProperty

Tablet