Freihanddaten

Nachdem die Freihandeingabe erfasst wurde, können Anwendungen diese Daten verwalten, bearbeiten und/oder auf andere Medien übertragen. Die Aktionen zum Auswählen, Kopieren, Verschieben, Speichern, Anzeigen und Ändern der Freihandeingabe erfolgen für das Freihandobjekt und seine enthaltenen Elemente, z. B. die Strokes-Auflistung und die Stroke-Objekte.

Hinweis

Mithilfe Real-Time Eingabestifts können Anwendungen daten im eigenen Format verwalten (z. B. Speichern von Strichen).

 

Freihand, Striche und Pakete

Ein Ink-Objekt ist der grundlegende Datentyp, der die vom InkCollector-Objekt gesammelte Eingabe verwaltet, bearbeitet und speichert. Ein Freihandobjekt enthält mindestens ein Stroke-Objekt sowie gängige Methoden und Eigenschaften zum Verwalten und Bearbeiten dieser Striche. Ein Strich ist definiert als der Datensatz, der in einer einzelnen Pen-down-, Pen-Move- und Pen-up-Sequenz erfasst wird. Die Strichdaten enthalten eine Sammlung von Paketen. Ein Paket ist der Datensatz, den das Tablet-Gerät an jedem Beispielpunkt sendet. Diese Daten enthalten Informationen wie Koordinaten, Stiftdruck, Stiftwinkel und alles andere, was die Hardware übertragen kann. Die PacketDescription-Eigenschaft des Stroke-Objekts beschreibt die Pakete, die ein Tablet generiert.

Striche

Sie können eine Momentaufnahme der Striche in einem Freihandobjekt abrufen, indem Sie die Strokes-Eigenschaft des Freihandobjekts verwenden. Die Strokes-Eigenschaft ist eine Auflistung von Verweisen auf die Striche im Freihandobjekt zum Zeitpunkt des Lesens der Strokes-Eigenschaft . Wenn Striche anschließend dem Freihandobjekt hinzugefügt oder gelöscht werden, wird eine zuvor abgerufene Strokes-Auflistung nicht aktualisiert. Darüber hinaus ist die Strokes-Eigenschaft ein Wert und wird wie jeder wert nicht aus dem Bereich entfernt, es sei denn, sie ist einer Variablen zugewiesen.

Um eine Strokes-Eigenschaft mit einem Freihandobjekt zu synchronisieren, umschließen Sie sie in einen Ereignishandler für die Ereignisse StrokesAdded und StrokesRemoved in der Strokes-Auflistung . Der Handler sollte eine neue Kopie der Strokes-Eigenschaft abrufen, wenn ein Ereignis ausgelöst wird. Achten Sie darauf, dass Sie den Ereignishandler nicht einer Strokes-Auflistung hinzufügen, die sich außerhalb des Bereichs befindet, bevor das Ereignis ausgelöst wird.

Beachten Sie in diesem Beispiel, dass theAddedStrokesIDs mit einer neuen Kopie der Stricheigenschaft im StrokesAdded_Event Handler aktualisiert wird.

public void StrokesAdded_Event(object sender, StrokesEventArgs e)
{
    int [] theAddedStrokesIDs = e.StrokeIds;
    theListBox.Items.Clear();
    foreach (int i in theAddedStrokesIDs)
    {
        theListBox.Items.Add("Added Stroke ID: " + i.ToString());
    }
}

PacketDescription-Eigenschaft

Die PacketDescription-Eigenschaft des Ink-Objekts definiert den Informationssatz in jedem Paket, den die Anwendung von einem Tablet-PC-Gerät abruft. Die Informationen enthalten in der Regel Koordinaten, aber sie können viel detailliertere Informationen (abhängig von den Funktionen des Tablet PC-Digitizers) wie Stiftdruck oder Stiftwinkel enthalten. Indem Sie Paketbeschreibungen für das InkCollector - oder InkOverlay-Objekt festlegen, bevor Freihandeingaben gesammelt werden (mithilfe der DesiredPacketDescription-Eigenschaft), haben Sie die vollständige Kontrolle darüber, welche der Eigenschaften der Tablet-PC-Geräte Sie empfangen möchten.

Extended Properties

Erweiterte Eigenschaften bieten einen Mechanismus zum Anfügen anwendungsdefinierter Daten an Freihand und andere Objekte. Weitere Informationen zu erweiterten Eigenschaften finden Sie in der ExtendedProperties-Auflistung .

Freihandrendering

Das Renderer-Objekt ist für das Rendern von Freihand verantwortlich. In einem entsprechenden Tablet-Kontext kann das Renderer-Objekt Freihandraumkoordinaten Pixeln zuordnen, Ansichtstransformationen anwenden und Freihand auf Bildschirmen und Druckern anzeigen. Die Draw - und DrawStroke-Methoden sind die primären Methoden zum Rendern von Freihand. Weitere Informationen zum Anzeigen von Freihand in einem Fenster finden Sie im Renderer-Objekt .

Spitzen

Ein Strich beginnt normalerweise, wenn der Stift auf die Zeichenfläche gesenkt wird, und endet, wenn der Stift angehoben wird. Innerhalb eines Strichs werden die Spitzen, Winkel und radikalen Richtungsänderungen als Cusps bezeichnet. Die Endpunkte eines Schlaganfalls werden auch als Cusps betrachtet. Beispielsweise hat der Großbuchstaben "L" drei Cusps, einen in der Mitte und einen an jedem Ende.

Wenn ein Strich eingegeben wird, wird er normalerweise geglättet und mit einer Bézier-Kurve (oder polylinen) gerendert. Bézierkurven können Cusps in kleine Schleifen verwandeln. Beispielsweise kann die Spitze des kursiven Buchstabens "i" geglättet werden, um dem kursiven "e" zu ähneln. Um dies zu verhindern, verfügen Microsoft-Renderer über eine "Pre-Bezier"-Phase, die die Cusps unterschiedlich behandelt.

Cusps können auch verwendet werden, um Strichobjekte in löschbare Einheiten zu unterteilen. Wenn Sie z. B. die vertikale Seite eines Großbuchstabens "L" auswählen, kann dies darauf hindeuten, dass nur diese Seite löscht. Der zu löschende Teil des Strichs wäre der Teil zwischen zwei Cusps.