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.
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.
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.");
}
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.
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.
Die folgende Abbildung zeigt eine RecognizerGuide-Struktur mit vier Spalten und drei Zeilen.
Weitere Informationen zur Verwendung der RecognizerGuide-Struktur finden Sie im Referenzthema RecognizerGuide .