|
//
// Basic Ink enabled Windows Forms application with
// handwriting recognition using InkAnalyzer
// Gavin Gear - http://blogs.msdn.com/gavingear
// 09/2006
//
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using Microsoft.Ink; // The managed Tablet PC API
namespace BasicInkApplication
{
public partial class BasicInkApplication : Form
{
// The InkOverlay that we'll attach to our Form
private InkOverlay inkOverlay;
private InkAnalyzer inkAnalyzer;
private InkRecognizerCollection recos;
private List<int> topLanguageIDs;
public BasicInkApplication()
{
InitializeComponent();
// Create an InkOverlay object that's attached to the Form
this.inkOverlay = new InkOverlay(this);
// Enable the InkOverlay (default is Enabled == false)
this.inkOverlay.Enabled = true;
this.inkOverlay.Stroke += new InkCollectorStrokeEventHandler(inkOverlay_Stroke);
// Create a new InkAnalyzer
// - Associate with the InkOverlay's Ink object
// - Send the Form "this" as the synchronizing object
this.inkAnalyzer = new InkAnalyzer(this.inkOverlay.Ink, this);
// The InkOverlay needs to be disposed due to unmanaged resources
// used by the InkOverlay
this.FormClosing += new FormClosingEventHandler(BasicInkApplication_FormClosing);
this.recos = this.inkAnalyzer.GetInkRecognizersByPriority();
this.topLanguageIDs = new List<int>();
if (recos.Count == 0)
{
MessageBox.Show("No recognizers installed on system.", "Error");
Application.Exit();
}
foreach (InkRecognizer reco in recos)
{
// Check to see if the current recognizer in the collection
// has supported languages, if so, add it to the combo box
if (reco.GetLanguages().Length != 0)
{
this.comboBoxLanguage.Items.Add(reco.Name);
this.topLanguageIDs.Add(reco.GetLanguages()[0]);
}
}
this.comboBoxLanguage.SelectedIndex = 0;
}
void inkOverlay_Stroke(object sender, InkCollectorStrokeEventArgs e)
{
// We have a new stroke, add it to the InkAnalyzer
this.inkAnalyzer.AddStroke(
e.Stroke,
this.topLanguageIDs[this.comboBoxLanguage.SelectedIndex]);
this.inkAnalyzer.BackgroundAnalyze();
}
void BasicInkApplication_FormClosing(object sender, FormClosingEventArgs e)
{
this.inkOverlay.Dispose();
this.inkAnalyzer.Dispose(); // Free the unmanaged resources
}
private void buttonRecognize_Click(object sender, EventArgs e)
{
MessageBox.Show(this.inkAnalyzer.GetRecognizedString());
}
}
} |