Condividi tramite


Metodo Ink.CreateStroke (array<Int32[], TabletPropertyDescriptionCollection)

Aggiornamento: novembre 2007

Crea un oggetto Stroke dai dati del pacchetto.

Spazio dei nomi:  Microsoft.Ink
Assembly:  Microsoft.Ink (in Microsoft.Ink.dll)

Sintassi

'Dichiarazione
Public Function CreateStroke ( _
    packetData As Integer(), _
    tabletPropertyDescriptionCollection As TabletPropertyDescriptionCollection _
) As Stroke
'Utilizzo
Dim instance As Ink
Dim packetData As Integer()
Dim tabletPropertyDescriptionCollection As TabletPropertyDescriptionCollection
Dim returnValue As Stroke

returnValue = instance.CreateStroke(packetData, _
    tabletPropertyDescriptionCollection)
public Stroke CreateStroke(
    int[] packetData,
    TabletPropertyDescriptionCollection tabletPropertyDescriptionCollection
)
public:
Stroke^ CreateStroke(
    array<int>^ packetData, 
    TabletPropertyDescriptionCollection^ tabletPropertyDescriptionCollection
)
public Stroke CreateStroke(
    int[] packetData,
    TabletPropertyDescriptionCollection tabletPropertyDescriptionCollection
)
public function CreateStroke(
    packetData : int[], 
    tabletPropertyDescriptionCollection : TabletPropertyDescriptionCollection
) : Stroke

Parametri

  • packetData
    Tipo: array<System.Int32[]
    Matrice di dati del pacchetto utilizzata per costituire l'oggetto Stroke.

Valore restituito

Tipo: Microsoft.Ink.Stroke
Tratto appena creato.
Oggetto Stroke appena creato.

Note

La dimensione della matrice del parametro packetData deve essere divisibile per la dimensione del parametro tabletPropertyDescriptionCollection.

Nota

I primi due elementi di ogni pacchetto nel parametro packetData devono essere X e Y. Se X e Y non vengono specificati rispettivamente nella prima e nella seconda posizione di ogni pacchetto, viene generata un'eccezione ArgumentException.

Esempi

In questo esempio, un tratto che rappresenta un'onda sinusoidale irregolare viene creato dai dati del pacchetto casuali. Innanzitutto, l'oggetto TabletPropertyMetrics di PacketPropertyX e Y viene ottenuto per inizializzare l'oggetto TabletPropertyDescriptionCollection con gli oggetti TabletPropertyDescription per i tipi PacketProperty. Se NormalPressure è supportato sulla tavoletta predefinita, anche quella è aggiunta all'insieme. Successivamente, i dati del pacchetto effettivi sono creati e sono passati al metodo CreateStroke.

Dim allTablets As Tablets = New Tablets()
' get the property metrics for X and Y
Dim MetricX As TabletPropertyMetrics = allTablets.DefaultTablet.GetPropertyMetrics(PacketProperty.X)
Dim MetricY As TabletPropertyMetrics = allTablets.DefaultTablet.GetPropertyMetrics(PacketProperty.Y)
' create the TabletPropertyDescriptionCollection, add X and Y
Dim tpDescCollection As TabletPropertyDescriptionCollection = New TabletPropertyDescriptionCollection()
tpDescCollection.Add(New TabletPropertyDescription(PacketProperty.X, MetricX))
tpDescCollection.Add(New TabletPropertyDescription(PacketProperty.Y, MetricY))

' see if the default tablet supports pressure
Dim supportPressure As Boolean = allTablets.DefaultTablet.IsPacketPropertySupported(PacketProperty.NormalPressure)
' if so, add NormalPressure to TabletPropertyDescriptionCollection
If supportPressure Then
    Dim MetricP As TabletPropertyMetrics = allTablets.DefaultTablet.GetPropertyMetrics(PacketProperty.NormalPressure)
    tpDescCollection.Add(New TabletPropertyDescription(PacketProperty.NormalPressure, MetricP))
End If
' init random number generator
Dim R As Random = New Random()
' init total PacketCount, slotPerPacket and packet data array
Const PACKET_COUNT As Integer = 250
Dim slotPerPacket As Integer = tpDescCollection.Count
Dim pData((PACKET_COUNT * slotPerPacket) - 1) As Integer
' assign packet values
For k As Integer = 0 To PACKET_COUNT - 1
    ' assign X - X will increment by 106
    pData(k * slotPerPacket) = (k * 106)
    ' assign Y - Y will be 6000 +- 1500
    pData((k * slotPerPacket) + 1) = 6000 + R.Next(-1500, 1500)
    ' assign Pressure if supported, 25-255
    If (supportPressure) Then
        pData((k * slotPerPacket) + 2) = R.Next(25, 255)
    End If
    next
' create the Stroke
mInkOverlay.Ink.CreateStroke(pData, tpDescCollection)
mInkOverlay.AttachedControl.Invalidate()
Tablets allTablets = new Tablets();
// get the property metrics for X and Y
TabletPropertyMetrics MetricX = allTablets.DefaultTablet.GetPropertyMetrics(PacketProperty.X);
TabletPropertyMetrics MetricY = allTablets.DefaultTablet.GetPropertyMetrics(PacketProperty.Y);
// create the TabletPropertyDescriptionCollection, add X and Y
TabletPropertyDescriptionCollection tpDescCollection = new TabletPropertyDescriptionCollection();
tpDescCollection.Add(new TabletPropertyDescription(PacketProperty.X, MetricX));
tpDescCollection.Add(new TabletPropertyDescription(PacketProperty.Y, MetricY));

// see if the default tablet supports pressure
bool supportPressure = allTablets.DefaultTablet.IsPacketPropertySupported(PacketProperty.NormalPressure);
// if so, add NormalPressure to TabletPropertyDescriptionCollection
if (supportPressure)
{
    TabletPropertyMetrics MetricP = allTablets.DefaultTablet.GetPropertyMetrics(PacketProperty.NormalPressure);
    tpDescCollection.Add(new TabletPropertyDescription(PacketProperty.NormalPressure, MetricP));
}
// init random number generator
Random R = new Random();
// init total PacketCount, slotPerPacket and packet data array
const int PACKET_COUNT = 250;
int slotPerPacket = tpDescCollection.Count;
int[] pData = new int[PACKET_COUNT*slotPerPacket];
// assign packet values
for (int k = 0; k < PACKET_COUNT; k++)
{
    // assign X - X will increment by 106
    pData[k * slotPerPacket] = (k * 106);
    // assign Y - Y will be 6000 +- 1500
    pData[(k * slotPerPacket) + 1] = 6000 + R.Next(-1500, 1500);
    // assign Pressure if supported, 25-255
    if (supportPressure)
    {
        pData[(k * slotPerPacket) + 2] = R.Next(25, 255);
    }
}
// create the Stroke
mInkOverlay.Ink.CreateStroke(pData, tpDescCollection);
mInkOverlay.AttachedControl.Invalidate();

Piattaforme

Windows Vista

.NET Framework e .NET Compact Framework non supportano tutte le versioni di ciascuna piattaforma. Per un elenco delle versioni supportate, vedere Requisiti di sistema di .NET Framework.

Informazioni sulla versione

.NET Framework

Supportato in: 3.0

Vedere anche

Riferimenti

Ink Classe

Membri Ink

Overload CreateStroke

Spazio dei nomi Microsoft.Ink

Stroke

TabletPropertyDescriptionCollection.InkToDeviceScaleX

TabletPropertyDescriptionCollection.InkToDeviceScaleY

Ink.CreateStrokes

Ink.DeleteStroke

Ink.DeleteStrokes