Dati input penna
Dopo aver raccolto l'input penna, le applicazioni possono gestire, modificare e/o trasferire i dati in altri supporti. Le azioni di selezione, copia, spostamento, salvataggio, visualizzazione e modifica dell'input penna vengono eseguite sull'oggetto Ink e sui relativi membri contenuti, ad esempio l'insieme Strokes e gli oggetti Stroke .
Nota
Usando Real-Time stilo, le applicazioni possono scegliere di mantenere i dati nel proprio formato, ad esempio il salvataggio dei tratti.
Input penna, tratti e pacchetti
Un oggetto Ink è il tipo di dati fondamentale che gestisce, modifica e archivia l'input raccolto dall'oggetto InkCollector . Un oggetto Ink contiene uno o più oggetti Stroke e metodi e proprietà comuni per gestire e modificare tali tratti. Un tratto viene definito come set di dati acquisiti in una singola sequenza penna, spostamento penna e penna. I dati del tratto contengono una raccolta di pacchetti. Un pacchetto è il set di dati inviati dal dispositivo tablet a ogni punto di esempio. Questi dati contengono informazioni, ad esempio coordinate, pressione penna, angolo penna e qualsiasi altra cosa che l'hardware può trasmettere. La proprietà PacketDescription dell'oggetto Stroke descrive i pacchetti generati da un tablet .
Tratti
È possibile ottenere uno snapshot dei tratti in un oggetto Ink usando la proprietà Strokes dell'oggetto Ink. La proprietà Strokes è una raccolta di riferimenti ai tratti nell'oggetto Ink al momento della lettura della proprietà Strokes . Se i tratti vengono successivamente aggiunti o eliminati dall'oggetto Ink , un insieme Strokes ottenuto in precedenza non viene aggiornato. Inoltre, la proprietà Strokes è un valore e, come qualsiasi valore, esce dall'ambito a meno che non venga assegnato a una variabile.
Per mantenere sincronizzata una proprietà Strokes con un oggetto Ink , eseguirne il wrapping in un gestore eventi per gli eventi StrokesAdded e StrokesRemoved nell'insieme Strokes . Il gestore deve ottenere una nuova copia della proprietà Strokes quando viene attivato un evento. Prestare attenzione a non aggiungere il gestore eventi a un insieme Strokes non compreso nell'ambito prima che venga attivato l'evento.
Si noti in questo esempio che theAddedStrokesIDs
viene aggiornato con una nuova copia della proprietà tratti nel StrokesAdded_Event
gestore.
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, proprietà
La proprietà PacketDescription dell'oggetto Ink definisce il set di informazioni in ogni pacchetto ottenuto dall'applicazione da un dispositivo Tablet PC. Le informazioni in genere includono coordinate, ma possono includere informazioni molto più dettagliate (a seconda delle funzionalità del digitalizzatore tablet PC), ad esempio pressione penna o angolo penna. Impostando le descrizioni dei pacchetti nell'oggetto InkCollector o InkOverlay prima che venga raccolto qualsiasi input penna (usando la proprietà DesiredPacketDescription), si ha il controllo completo sulle proprietà dei dispositivi Tablet PC da ricevere.
Extended Properties
Le proprietà estese forniscono un meccanismo per collegare i dati definiti dall'applicazione a Input penna e ad altri oggetti. Per altre informazioni sulle proprietà estese, vedere l'insieme ExtendedProperties .
Rendering penna
L'oggetto Renderer è responsabile del rendering dell'input penna. Dato un contesto di tablet appropriato, l'oggetto Renderer può eseguire il mapping delle coordinate dello spazio penna ai pixel, applicare trasformazioni di visualizzazione e visualizzare input penna su schermi e stampanti. I metodi Draw e DrawStroke sono i metodi principali per il rendering dell'input penna. Per altre informazioni sulla visualizzazione dell'input penna in una finestra, vedere l'oggetto Renderer .
Cuspidi
Un tratto inizia normalmente quando la penna viene abbassata alla superficie di disegno e termina quando viene generata la penna. All'interno di un tratto, i picchi, gli angoli e i cambiamenti radicali di direzione sono chiamati cusps. Gli endpoint di un tratto sono considerati anche cusps. Ad esempio, la lettera maiuscola "L" ha tre cusps, una al centro e una alla fine.
Quando viene immesso un tratto, viene normalmente lisciato e eseguito il rendering usando una curva bezier (o polilinea). Le curve di bezier possono trasformare i cusps in piccoli cicli. Ad esempio, il picco della lettera curiva "i" potrebbe essere lisciato per assomigliare al curvo "e". Per evitare questo problema, i renderer Microsoft hanno una fase "pre-Bezier" che gestisce in modo diverso i cusps.
È anche possibile usare Cusps per suddividere gli oggetti Stroke in unità cancellabili. Ad esempio, la selezione del lato verticale di una maiuscola "L" potrebbe indicare la cancellazione solo sul lato. La parte del tratto da cancellare sarebbe la parte tra due cusps.