Architektura interfejsów API StylusInput
Interfejsy API StylusInput umożliwiają interakcję ze strumieniem danych pióra tabletu. Aby wchodzić w interakcje ze strumieniem danych, dodaj obiekt RealTimeStylus do aplikacji i dodaj wtyczki do obiektu RealTimeStylus.
Dwa wtyczki są dostępne w interfejsach API StylusInput. Obiekt DynamicRenderer implementuje interfejs IStylusSyncPlugin. Obiekt DynamicRenderer renderuje atrament w czasie rzeczywistym, ponieważ jest rysowany. Obiekt GestureRecognizer implementuje interfejsy IStylusSyncPlugin i IStylusAsyncPlugin. Obiekt GestureRecognizer rozpoznaje gesty aplikacji.
Definicje
Następujące terminy są używane w sekcjach opisujących interfejsy API StylusInput:
Wtyczka synchroniczna
Klasa, która implementuje interfejs IStylusSyncPlugin. Wtyczki synchroniczne są zwykle wywoływane bezpośrednio przez obiekt RealTimeStylus.
Wtyczka asynchroniczna
Klasa, która implementuje interfejs IStylusAsyncPlugin. Wtyczki asynchroniczne są zwykle wywoływane w wątku interfejsu użytkownika aplikacji.
Synchroniczna kolekcja wtyczek
Kolekcja StylusSyncPluginCollection, która jest uporządkowaną kolekcją obiektów IStylusSyncPlugin. Synchroniczna kolekcja wtyczek zwykle odwołuje się do kolekcji przypisanej do właściwości SyncPluginCollection obiektu RealTimeStylus. Do kolekcji wtyczki synchronicznej można dodać tylko synchroniczne wtyczki.
Asynchroniczna kolekcja wtyczek
Kolekcja StylusAsyncPluginCollection, która jest uporządkowaną kolekcją obiektów IStylusAsyncPlugin. Asynchroniczna kolekcja wtyczek zwykle odwołuje się do kolekcji przypisanej do obiektu AsyncPluginCollection obiektu RealTimeStylus. Do kolekcji wtyczki asynchronicznej można dodać tylko asynchroniczne wtyczki.
Wtyczki synchroniczne i asynchroniczne
Obiekt RealTimeStylus został zaprojektowany w celu zapewnienia dostępu w czasie rzeczywistym do strumienia danych z pióra tabletu. Utwórz lub użyj wtyczek synchronicznych dla zadań, które wymagają dostępu w czasie rzeczywistym do strumienia danych i są cofania obliczeń, takie jak filtrowanie pakietów. Utwórz lub użyj wtyczki asynchronicznych dla zadań, które nie wymagają dostępu w czasie rzeczywistym do strumienia danych, na przykład do tworzenia i przechowywania pociągnięć w obiekcie InkDisp.
Niektóre zadania mogą wymagać obliczeń, ale wymagają dostępu w czasie rzeczywistym do strumienia danych, takiego jak rozpoznawanie gestów wielostrojowych. Aby rozwiązać te potrzeby, interfejsy API StylusInput zapewniają kaskadowy model RealTimeStylus, który umożliwia używanie dwóch obiektów RealTimeStylus, z których każdy działa we własnym wątku. Aby uzyskać więcej informacji na temat modelu RealTimeStylus, zobacz Cascaded RealTimeStylus Model.
Aby uzyskać więcej informacji na temat korzystania z wtyczek i tworzenia ich, zobacz Praca z interfejsami API StylusInput.
Strumień danych pióra tabletu
Obiekt RealTimeStylus ma dwie kolejki wewnętrzne, które zawierają dane pióra tabletu, kolejkę wejściową i kolejkę wyjściową. Dane pióra są konwertowane na wystąpienia klas w przestrzeni nazw Microsoft.StylusInput.PluginData. Na poniższej liście opisano, jak obiekt RealTimeStylus obsługuje dane pióra tabletu:
Obiekt RealTimeStylus sprawdza obiekty danych wtyczek najpierw w kolejce wejściowej, a następnie ze strumienia danych pióra tabletu.
Obiekt RealTimeStylus wysyła jeden obiekt danych wtyczki do obiektów w kolekcji synchronicznej wtyczki. Każda wtyczka synchroniczna może dodawać dane do kolejki wejściowej lub wyjściowej.
Po wysłaniu obiektu danych wtyczki do wszystkich elementów członkowskich kolekcji wtyczki synchronicznej obiekt danych wtyczki zostanie umieszczony w kolejce wyjściowej obiektu RealTimeStylus.
Obiekt RealTimeStylus następnie sprawdza, czy następny obiekt danych wtyczki ma być przetwarzany.
Podczas gdy kolejka wyjściowa obiektu RealTimeStylus zawiera dane, obiekt RealTimeStylus wysyła jeden obiekt danych wtyczki z kolejki wyjściowej do obiektów w kolekcji asynchronicznej wtyczek. Każda wtyczka asynchroniczna może dodawać dane do kolejki wejściowej lub wyjściowej. Jednak ze względu na to, że wątek interfejsu użytkownika są uruchamiane wtyczki asynchroniczne, dane są dodawane do kolejki w odniesieniu do bieżących danych pióra, które są przetwarzane przez obiekt RealTimeStylus, a nie w odniesieniu do danych przetwarzanych przez wtyczkę asynchroniczną.
Na poniższym diagramie przedstawiono przepływ danych pióra tabletu za pośrednictwem obiektu RealTimeStylus i jego kolekcji wtyczek.
Na tym diagramie okręgi oznaczone etykietą "A" i "B" reprezentują dane pióra tabletu, które zostały już dodane do RealTimeStylus kolejki wyjściowej obiektu i które nie zostały jeszcze wysłane do kolekcji asynchronicznej wtyczki. Okrąg oznaczony etykietą "C" reprezentuje dane pióra tabletu, które są obecnie przetwarzane przez obiekt RealTimeStylus. Jest ona wysyłana do kolekcji wtyczek synchronicznych i umieszczana w kolejce wyjściowej. Puste koło reprezentuje pozycję w kolejce wyjściowej, w której są dodawane przyszłe dane pióra tabletu.
Aby uzyskać więcej informacji na temat sposobu dodawania określonych danych do kolejki i przetwarzania, zobacz Plug-in Data and the RealTimeStylus Class.
Interfejsy API StylusInput
Interfejsy API StylusInput znajdują się głównie w microsoft.StylusInput i Microsoft.StylusInput.PluginData przestrzeni nazw. Interfejsy API StylusInput odwołują się również do niektórych klas w przestrzeni nazw Microsoft.Ink, takiej jak klasa tabletu Tablet, kolekcja TabletPropertyDescriptionCollection oraz ApplicationGesture i SystemGesture wyliczenia.
Tematy pokrewne