Bagikan melalui


Stroke.SetPacketValuesByProperty Method (Guid, Int32, Int32, array<Int32[])

Sets the data for a specified packet property for a range of packets in the Stroke object.

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

Syntax

'Declaration
Public Function SetPacketValuesByProperty ( _
    id As Guid, _
    index As Integer, _
    count As Integer, _
    packetValues As Integer() _
) As Integer
'Usage
Dim instance As Stroke 
Dim id As Guid 
Dim index As Integer 
Dim count As Integer 
Dim packetValues As Integer()
Dim returnValue As Integer 

returnValue = instance.SetPacketValuesByProperty(id, _
    index, count, packetValues)
public int SetPacketValuesByProperty(
    Guid id,
    int index,
    int count,
    int[] packetValues
)
public:
int SetPacketValuesByProperty(
    Guid id, 
    int index, 
    int count, 
    array<int>^ packetValues
)
public function SetPacketValuesByProperty(
    id : Guid, 
    index : int, 
    count : int, 
    packetValues : int[]
) : int

Parameters

  • index
    Type: System.Int32

    The starting index of the packet to be modified.

  • count
    Type: System.Int32

    The number of packets in the stroke to modify and the number of values in packetValues. A value of -1 means that all packets are modified.

  • packetValues
    Type: array<System.Int32[]

    The array of packet data values. The method fails if any of the values in the array exceed the minimum or maximum value of the property. To determine the range of values in the property, call the GetPacketDescriptionPropertyMetrics method.

Return Value

Type: System.Int32
Returns the actual number of packets set.

Remarks

This method throws an exception if the packetValues array is the incorrect length.

Examples

In this example, each selected Stroke object of an InkOverlay object is modified so that each point of the first half of the stroke contains the minimum allowed NormalPressure packet value.

Using the GetPacketValuesByProperty method, the NormalPressure packet values for the first half of the Stroke object are obtained. The values are then set to the minimum allowed (as obtained via the GetPacketDescriptionPropertyMetrics method), and reapplied to the stroke using the SetPacketValuesByProperty method.

Try 
    For Each S As Stroke In mInkOverlay.Selection
        ' get the PacketProperty.NormalPressure metrics for the stroke 
        Dim metrics As TabletPropertyMetrics = S.GetPacketDescriptionPropertyMetrics(PacketProperty.NormalPressure)
        ' we want to get half of the NormalPressure values 
        Dim halfWayPt As Integer = S.PacketCount / 2
        ' get the NormalPressure values for the first half of the packets 
        Dim npValues() As Integer = S.GetPacketValuesByProperty(PacketProperty.NormalPressure, 0, halfWayPt)
        ' set the NormalPressure values to min 
        For k As Integer = 0 To npValues.Length - 1
            npValues(k) = metrics.Minimum
        Next 
        ' set the NormalPressure values for the first half of the packets
        S.SetPacketValuesByProperty(PacketProperty.NormalPressure, 0, halfWayPt, npValues)
    Next 
Catch ex As ArgumentException
    ' This exception will be raised if PacketProperty.NormalPressure is not supported 
    ' This will be the case if creating strokes with a mouse 
End Try
try
{
    foreach (Stroke S in mInkOverlay.Selection)
    {
        // get the PacketProperty.NormalPressure metrics for the stroke
        TabletPropertyMetrics metrics = S.GetPacketDescriptionPropertyMetrics(PacketProperty.NormalPressure);
        // we want to get half of the NormalPressure values 
        int halfWayPt = S.PacketCount / 2;
        // get the NormalPressure values for the first half of the packets 
        int[] npValues = S.GetPacketValuesByProperty(PacketProperty.NormalPressure, 0, halfWayPt);
        // set the NormalPressure values to min 
        for (int k = 0; k < npValues.Length; k++)
        {
            npValues[k] = metrics.Minimum;
        }
        // set the NormalPressure values for the first half of the packets
        S.SetPacketValuesByProperty(PacketProperty.NormalPressure, 0, halfWayPt, npValues);
    }
}
catch (ArgumentException)
{
    // This exception will be raised if PacketProperty.NormalPressure is not supported 
    // This will be the case if creating strokes with a mouse
}

Platforms

Windows 7, Windows Vista, Windows Server 2008 R2, Windows Server 2008

The .NET Framework and .NET Compact Framework do not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.

Version Information

.NET Framework

Supported in: 3.0

See Also

Reference

Stroke Class

Stroke Members

SetPacketValuesByProperty Overload

Microsoft.Ink Namespace

PacketProperty

Stroke.GetPacketDescriptionPropertyMetrics