Freigeben über


Freihanderkennung

Nicht alle Anwendungen erfordern die Verwendung von Erkennung, aber da die meisten Anwendungen mit Text als primärem Datentyp entworfen wurden, ist die Fähigkeit, Freihand in Text zu konvertieren, sehr wertvoll. Sie können die Erkennungsfeatures der Tablet-PC-Plattform-API verwenden, um Informationen zu den verfügbaren Erkennungsmodulen abzufragen, z. B. welche Sprachen sie erkennen. Anschließend können Sie eine Strokes-Auflistung von einem Ink-Objekt an eine Erkennungs-Engine senden und ein RecognitionResult-Objekt zurückgeben lassen.

RecognizerContext-Objekt

Ein RecognizerContext-Objekt ist die Instanziierung einer bestimmten Erkennung. Mit dem RecognizerContext-Objekt können Sie eine bestimmte Auflistung von Strichen synchron oder asynchron erkennen. Beim asynchronen Erkennen gibt das RecognizerContext-Objekt das RecognitionResult-Objekt in einem Ereignisrückruf an die Anwendung zurück.

Erkennungs- und Erkennungsobjekte

Ein einzelner Tablet-PC kann über eine oder mehrere Erkennungen verfügen. Sie können die Sammlung der Erkennung abfragen, um zu bestimmen, welche Erkennung verwendet werden soll. Eine Erkennung stellt spezifische Informationen zu ihren Funktionen bereit, z. B. die Sprache, die sie erkennen kann, und den Hersteller.

Um zu bestimmen, ob mindestens eine Erkennung installiert ist, instanziieren Sie ein InkRecognizerContext-Objekt , wie in den folgenden C++- und C#-Codebeispielen gezeigt. Wenn keine Erkennung vorhanden ist, schlägt dieser Aufruf von CoCreateInstance fehl.

CComPtr<IInkRecognizerContext> g_pIInkRecoContext;
hr = CoCreateInstance(CLSID_InkRecognizerContext, 
      NULL, CLSCTX_INPROC_SERVER,
      IID_IInkRecognizerContext, 
(void **) &g_pIInkRecoContext);
if (FAILED(hr)) 
{
      ::MessageBox(NULL, TEXT("No recognizers installed.\nExiting."), 
      gc_szAppName, MB_ICONERROR);
      return -1;
}
try
{
  Recognizers recos = new Recognizers();//Check for recognizer.
  Recognizer defReco = recos.GetDefaultRecognizer();
  recoContext = defReco.CreateRecognizerContext();
}
catch
{
  MessageBox.Show("No recognizers installed.");
}

RecognitionResult- und RecognitionAlternate-Objekte

Die Ergebnisse der Erkennung werden in einem RecognitionResult-Objekt zurückgegeben. Die Ergebnisse enthalten eine beste Ergebniszeichenfolge in der TopString-Eigenschaft sowie eine Sammlung alternativer Ergebnisse in einer RecognitionAlternates-Auflistung . Das RecognitionResult-Objekt kann mit der ursprünglichen Strokes-Auflistung beibehalten werden, aus der es generiert wurde.

RecognizerGuide-Struktur

Die Erkennungsanleitung kann aus Zeilen und Spalten bestehen und gibt der Erkennung einen besseren Kontext, in dem die Erkennung ausgeführt werden soll. Sie können z. B. horizontale Linien auf dem Bildschirm eines Benutzers zeichnen, fast wie ein regelrechtes Stück Papier, die anzeigen, wo handschriftlich geschrieben werden soll (diese Art von Führungslinie würde nur aus Zeilen und ohne Spalten bestehen). Wenn ein Benutzer in die Zeilen schreibt, anstatt einen beliebigen Speicherplatz zu verwenden, verbessert sich die Erkennungsgenauigkeit.

Die folgende Abbildung zeigt eine RecognizerGuide-Struktur mit zwei Zeilen für die Eingabe.

Abbildung mit zweizeiligem Erkennungsleitfaden

Die folgende Abbildung zeigt eine RecognizerGuide-Struktur mit vier Spalten und drei Zeilen.

Abbildung der Drei-nach-Vier-Erkennungsanleitung

Weitere Informationen zur Verwendung der RecognizerGuide-Struktur finden Sie im Referenzthema RecognizerGuide .