private async void Recognize(object sender, EventArgs e) { if (Ink != null) { string str = string.Empty; IReadOnlyList <InkStroke> currentStrokes = Ink.InkPresenter.StrokeContainer.GetStrokes(); if (currentStrokes.Count > 0) { try { var inkRecognizerContainer = new InkRecognizerContainer(); var recognitionResults = await inkRecognizerContainer.RecognizeAsync(Ink.InkPresenter.StrokeContainer, InkRecognitionTarget.All); if (recognitionResults.Count > 0) { foreach (var r in recognitionResults) { str += r.GetTextCandidates()[0]; } } } catch (Exception ex) { Debug.WriteLine(ex.Message); } } if (_vm != null) { _vm.RecognizeResult(str); } } }
private async Task RecognizeInkerText() { var inkRecognizer = new InkRecognizerContainer(); var recognitionResults = await inkRecognizer.RecognizeAsync(Inker.InkPresenter.StrokeContainer, InkRecognitionTarget.All); List <TextBox> boxes = new List <TextBox>(); foreach (var result in recognitionResults) { List <UIElement> elements = new List <UIElement>( VisualTreeHelper.FindElementsInHostCoordinates( new Rect(new Point(result.BoundingRect.X, result.BoundingRect.Y), new Size(result.BoundingRect.Width, result.BoundingRect.Height)), this)); TextBox box = elements.Where(el => el is TextBox && (el as TextBox).IsEnabled).FirstOrDefault() as TextBox; if (box != null) { if (!boxes.Contains(box)) { boxes.Add(box); box.Text = ""; } box.Text += " " + result.GetTextCandidates().FirstOrDefault().Trim(); } } Inker.InkPresenter.StrokeContainer.Clear(); }
public PracticePage() { this.InitializeComponent(); random = new Random(); SystemNavigationManager.GetForCurrentView().AppViewBackButtonVisibility = AppViewBackButtonVisibility.Visible; SystemNavigationManager.GetForCurrentView().BackRequested += OnBackRequested; Gana.InkPresenter.InputDeviceTypes = Windows.UI.Core.CoreInputDeviceTypes.Mouse | Windows.UI.Core.CoreInputDeviceTypes.Pen; InkDrawingAttributes drawingAttributes = new InkDrawingAttributes(); drawingAttributes.Size = new Size(10, 10); Gana.InkPresenter.StrokesCollected += InkPresenter_StrokesCollected; drawingAttributes.Color = Windows.UI.Colors.Black; drawingAttributes.IgnorePressure = false; drawingAttributes.FitToCurve = true; Gana.InkPresenter.UpdateDefaultDrawingAttributes(drawingAttributes); inkRecognizerContainer = new InkRecognizerContainer(); recoView = inkRecognizerContainer.GetRecognizers(); if (recoView.Count() > 0) { foreach (InkRecognizer recognizer in recoView) { if (recognizer.Name == "Microsoft 日本語手書き認識エンジン") { inkRecognizerContainer.SetDefaultRecognizer(recognizer); } } } else { ShowMessage("Please Install Japanese Handwriting (www.pinyinjoe.com/windows-10/windows-10-chinese-handwriting-speech-display-language-packs.htm)"); } }
private async void Reco_Click(object sender, RoutedEventArgs e) { if (inkCanvas.InkPresenter.StrokeContainer.GetStrokes().Count > 0) { var recognizer = new InkRecognizerContainer(); var recognitionResults = await recognizer.RecognizeAsync(inkCanvas.InkPresenter.StrokeContainer, InkRecognitionTarget.All); string result = ""; if (recognitionResults.Count > 0) { foreach (var r in recognitionResults) { var candidates = r.GetTextCandidates(); result += " " + candidates[0]; } } else { result = "NO TEXT RECOGNIZED!"; } recoResult.Text = result; } }
/// <summary> /// Recognizes the inker text. /// </summary> /// <returns></returns> private async Task RecognizeInkerText() { try { InkRecognizerContainer inkRecognizer = new InkRecognizerContainer(); IReadOnlyList <InkRecognitionResult> recognitionResults = await inkRecognizer.RecognizeAsync(this.inker.InkPresenter.StrokeContainer, InkRecognitionTarget.All); string value = string.Empty; foreach (var result in recognitionResults) { Point p = new Point(result.BoundingRect.X, result.BoundingRect.Y); Size s = new Size(result.BoundingRect.Width, result.BoundingRect.Height); Rect r = new Rect(p, s); GeneralTransform gt = this.TransformToVisual(Window.Current.Content); var r2 = gt.TransformBounds(r); var elements = VisualTreeHelper.FindElementsInHostCoordinates(r2, (UIElement)this.Content, true); TextBox box = elements.FirstOrDefault(el => el is TextBox && (el as TextBox).IsEnabled) as TextBox; if (box != null) { box.Text += result.GetTextCandidates().FirstOrDefault().Trim() + " "; } } this.inker.InkPresenter.StrokeContainer.Clear(); } catch { } }
public MainPage() { this.InitializeComponent(); InkDrawingAttributes drawingAttributes = new InkDrawingAttributes(); drawingAttributes.Color = Windows.UI.Colors.Black; drawingAttributes.Size = new Size(4, 4); drawingAttributes.IgnorePressure = false; drawingAttributes.FitToCurve = true; inkRecognizerContainer = new InkRecognizerContainer(); recoView = inkRecognizerContainer.GetRecognizers(); if (recoView.Count > 0) { foreach (InkRecognizer recognizer in recoView) { RecoName.Items.Add(recognizer.Name); } } else { RecoName.IsEnabled = false; RecoName.Items.Add("No Recognizer Available"); } RecoName.SelectedIndex = 0; // Set the text services so we can query when language changes textServiceManager = CoreTextServicesManager.GetForCurrentView(); textServiceManager.InputLanguageChanged += TextServiceManager_InputLanguageChanged; SetDefaultRecognizerByCurrentInputMethodLanguageTag(); InkCanvas.InkPresenter.UpdateDefaultDrawingAttributes(drawingAttributes); InkCanvas.InkPresenter.InputDeviceTypes = Windows.UI.Core.CoreInputDeviceTypes.Mouse | Windows.UI.Core.CoreInputDeviceTypes.Pen | Windows.UI.Core.CoreInputDeviceTypes.Touch; }
private async void RecognizeText() { IReadOnlyList <InkStroke> currentStrokes = inkCanvas.InkPresenter.StrokeContainer.GetStrokes(); InkRecognizerContainer inkRecognizerContainer = new InkRecognizerContainer(); if (currentStrokes.Count > 0) { var recognitionResults = await inkRecognizerContainer.RecognizeAsync(inkCanvas.InkPresenter.StrokeContainer, InkRecognitionTarget.All); if (recognitionResults.Count > 0) { // Display recognition result string str = ""; foreach (var r in recognitionResults) { str = str + " " + r.GetTextCandidates()[0]; } txtrecognitionResult.Document.SetText(Windows.UI.Text.TextSetOptions.ApplyRtfDocumentDefaults, string.IsNullOrEmpty(str) ? string.Empty : str); } else { txtrecognitionResult.Document.SetText(Windows.UI.Text.TextSetOptions.ApplyRtfDocumentDefaults, "No text recognized."); } string txt; txtrecognitionResult.Document.GetText(Windows.UI.Text.TextGetOptions.UseCrlf, out txt); dynamicNotes = dynamicNotes + " " + txt; } else { txtrecognitionResult.Document.SetText(Windows.UI.Text.TextSetOptions.ApplyRtfDocumentDefaults, "Must first write something."); } }
private async Task RecognizeInkerText() { System.Diagnostics.Debug.WriteLine("RecognizeInkerText"); try { var inkRecognizer = new InkRecognizerContainer(); var recognitionResults = await inkRecognizer.RecognizeAsync(inker.InkPresenter.StrokeContainer, InkRecognitionTarget.All); List <TextBox> textBoxes = new List <TextBox>(); string value = string.Empty; foreach (var result in recognitionResults) { if (TargetTextControl == null) { Point p = new Point(result.BoundingRect.X, result.BoundingRect.Y); Size s = new Size(result.BoundingRect.Width, result.BoundingRect.Height); Rect r = new Rect(p, s); var elements = VisualTreeHelper.FindElementsInHostCoordinates(r, contentPresenter); TextBox box = elements.Where(el => el is TextBox && (el as TextBox).IsEnabled).FirstOrDefault() as TextBox; if (box != null) { if (!textBoxes.Contains(box)) { textBoxes.Add(box); box.Text = ""; } if (string.IsNullOrEmpty(box.Text) == false) { box.Text += " "; } box.Text += result.GetTextCandidates().FirstOrDefault().Trim(); } } else { if (string.IsNullOrEmpty(value) == false) { value += " "; } value += result.GetTextCandidates().FirstOrDefault().Trim(); } } if (TargetTextControl != null) { var type = TargetTextControl.GetType(); PropertyInfo pInfo = type.GetProperty(TEXT_PROPERTY_NAME); pInfo.SetValue(TargetTextControl, value); } inker.InkPresenter.StrokeContainer.Clear(); } catch (Exception ex) { System.Diagnostics.Debug.WriteLine(ex.ToString()); } }
private async void OnRecognizeText(object sender, RoutedEventArgs e) { int resultsNumber = 0; InkRecognizerContainer inkRecognizer = new InkRecognizerContainer(); var recognitionResults = await inkRecognizer.RecognizeAsync(Canvas.InkPresenter.StrokeContainer, InkRecognitionTarget.All); string str = string.Empty; foreach (InkRecognitionResult result in recognitionResults) { // Get all recognition candidates from each recognition result. IReadOnlyList <string> candidates = result.GetTextCandidates(); resultsNumber = candidates.Count; foreach (string candidate in candidates) { str += $"{candidate} | "; } } StringBuilder builder = new StringBuilder(); builder.AppendLine($"Number of recognized words: {resultsNumber}"); builder.AppendLine("Recognized text:"); builder.AppendLine(str); MessageDialog dialog = new MessageDialog(str); await dialog.ShowAsync(); }
public RecognizerControl() { this.InitializeComponent(); const double penSize = 4; // Initialize drawing attributes. These are used in inking mode. var drawingAttributes = new InkDrawingAttributes { Color = Windows.UI.Colors.Red, Size = new Windows.Foundation.Size(penSize, penSize), IgnorePressure = false, FitToCurve = true }; // Show the available recognizers _inkRecognizerContainer = new InkRecognizerContainer(); _recoView = _inkRecognizerContainer.GetRecognizers(); // Set the text services so we can query when language changes _textServiceManager = CoreTextServicesManager.GetForCurrentView(); _textServiceManager.InputLanguageChanged += TextServiceManager_InputLanguageChanged; SetDefaultRecognizerByCurrentInputMethodLanguageTag(); // Initialize the InkCanvas InkCanvas.InkPresenter.UpdateDefaultDrawingAttributes(drawingAttributes); InkCanvas.InkPresenter.InputDeviceTypes = Windows.UI.Core.CoreInputDeviceTypes.Mouse | Windows.UI.Core.CoreInputDeviceTypes.Pen | Windows.UI.Core.CoreInputDeviceTypes.Touch; InkCanvas.InkPresenter.StrokeInput.StrokeStarted += StrokeInput_StrokeStarted; InkCanvas.InkPresenter.StrokeInput.StrokeEnded += StrokeInput_StrokeEnded; _recoTimer = new DispatcherTimer() { Interval = TimeSpan.FromSeconds(2) }; _recoTimer.Tick += _recoTimer_Tick; }
private async void Recognizer_OnClick(object sender, RoutedEventArgs e) { //手写识别 var container = new InkRecognizerContainer(); //使用墨迹识别 var result = await container.RecognizeAsync(ink.InkPresenter.StrokeContainer, InkRecognitionTarget.All); //获取识别结果 InkRecognitionResult 对象中还能获取候选字 string str = ""; foreach (var temp in result) { for (int i = 0; i < temp.GetTextCandidates().Count; i++) { str += temp.GetTextCandidates()[i]; } } await Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () => { Text.Text = str; }); }
private async void Reco_Click(object sender, RoutedEventArgs e) { if (inkCanvas.InkPresenter.StrokeContainer.GetStrokes().Count > 0) { var recognizer = new InkRecognizerContainer(); var recognitionResults = await recognizer.RecognizeAsync(inkCanvas.InkPresenter.StrokeContainer, InkRecognitionTarget.All); string result = ""; //justACanvas.Children.Clear(); if (recognitionResults.Count > 0) { foreach (var r in recognitionResults) { var candidates = r.GetTextCandidates(); result += " " + candidates[0]; //var rect = r.BoundingRect; //var text = new TextBlock(); //text.Text = candidates[0]; //justACanvas.Children.Add(text); //Canvas.SetTop(text, rect.Bottom + 5); //Canvas.SetLeft(text, rect.Left); } } else { result = "NO TEXT RECOGNIZED!"; } recoResult.Text = result; } }
private async void btnRecognize_Click(object sender, RoutedEventArgs e) { // Get all strokes on the InkCanvas. IReadOnlyList <InkStroke> currentStrokes = inkCanvas.InkPresenter.StrokeContainer.GetStrokes(); // Ensure an ink stroke is present. if (currentStrokes.Count > 0) { // Create a manager for the InkRecognizer object // used in handwriting recognition. InkRecognizerContainer inkRecognizerContainer = new InkRecognizerContainer(); // inkRecognizerContainer is null if a recognition engine is not available. if (!(inkRecognizerContainer == null)) { // Recognize all ink strokes on the ink canvas. IReadOnlyList <InkRecognitionResult> recognitionResults = await inkRecognizerContainer.RecognizeAsync( inkCanvas.InkPresenter.StrokeContainer, InkRecognitionTarget.All); // Process and display the recognition results. if (recognitionResults.Count > 0) { string str = string.Empty; // Iterate through the recognition results. foreach (var result in recognitionResults) { // Get all recognition candidates from each recognition result. IReadOnlyList <string> candidates = result.GetTextCandidates(); //str += "Candidates: " + candidates.Count.ToString() + "\n"; str = candidates.FirstOrDefault(); } // Display the recognition candidates. //txtrecognitionResult.Text = str; txtrecognitionResult.Document.SetText(Windows.UI.Text.TextSetOptions.ApplyRtfDocumentDefaults, string.IsNullOrEmpty(str) ? string.Empty : str); allNotes += str; //// Clear the ink canvas once recognition is complete. //inkCanvas.InkPresenter.StrokeContainer.Clear(); } else { txtrecognitionResult.Document.SetText(Windows.UI.Text.TextSetOptions.ApplyRtfDocumentDefaults, "No recognition results."); } } else { Windows.UI.Popups.MessageDialog messageDialog = new Windows.UI.Popups.MessageDialog("You must install handwriting recognition engine."); await messageDialog.ShowAsync(); } } else { txtrecognitionResult.Document.SetText(Windows.UI.Text.TextSetOptions.ApplyRtfDocumentDefaults, "No ink strokes to recognize."); } }
private async void RecognizeHandwritingButton_OnClick(object sender, RoutedEventArgs e) { // Get all strokes on the InkCanvas. var currentStrokes = NameInkCanvas.InkPresenter.StrokeContainer.GetStrokes(); // Ensure an ink stroke is present. if (currentStrokes.Count < 1) { await new MessageDialog("You have not written anything in the canvas area").ShowAsync(); return; } // Create a manager for the InkRecognizer object used in handwriting recognition. var inkRecognizerContainer = new InkRecognizerContainer(); // inkRecognizerContainer is null if a recognition engine is not available. if (inkRecognizerContainer == null) { await new MessageDialog("You must install handwriting recognition engine.").ShowAsync(); return; } // Recognize all ink strokes on the ink canvas. var recognitionResults = await inkRecognizerContainer.RecognizeAsync( NameInkCanvas.InkPresenter.StrokeContainer, InkRecognitionTarget.All); // Process and display the recognition results. if (recognitionResults.Count < 1) { await new MessageDialog("No recognition results.").ShowAsync(); return; } var str = ""; // Iterate through the recognition results, this will loop once for every word detected foreach (var result in recognitionResults) { // Get all recognition candidates from each recognition result var candidates = result.GetTextCandidates(); // For the purposes of this demo, we'll use the first result var recognizedName = candidates[0]; // Concatenate the results str += recognizedName + " "; } // Display the recognized name PatientNameTextBlock.Text = str.Trim(); // Clear the ink canvas once recognition is complete. NameInkCanvas.InkPresenter.StrokeContainer.Clear(); }
public MainPage() { this.InitializeComponent(); ink.InkPresenter.InputDeviceTypes = CoreInputDeviceTypes.Mouse | CoreInputDeviceTypes.Touch | CoreInputDeviceTypes.Pen; var container = new InkRecognizerContainer(); foreach (var temp in container.GetRecognizers()) { Text.Text += temp.Name + "\r\n"; } }
private async void RecognizeButton_Click(object sender, RoutedEventArgs e) { var inkRecognizer = new InkRecognizerContainer(); if (null != inkRecognizer) { var recognitionResults = await inkRecognizer.RecognizeAsync(this.InkCanvas.InkPresenter.StrokeContainer, InkRecognitionTarget.All); string recognizedText = string.Join(" ", recognitionResults.Select(i => i.GetTextCandidates()[0])); var messageDialog = new MessageDialog(recognizedText); await messageDialog.ShowAsync(); } }
private static void CreateRecognizerNameList() { _recognizerNameList = new List <string>(); var container = new InkRecognizerContainer(); var recognizers = container.GetRecognizers(); if (recognizers != null && recognizers.Count > 0) { foreach (var recognizer in recognizers) { _recognizerNameList.Add(recognizer.Name); } } }
public Scenario2() { this.InitializeComponent(); //read language related resource file .strings/en or zh-cn/resources.resw Run run1 = new Run(); run1.Text = ResourceManagerHelper.ReadValue("Description2_p1"); this.textDes.Inlines.Add(run1); this.textDes.Inlines.Add(new LineBreak()); // Initialize drawing attributes. These are used in inking mode. InkDrawingAttributes drawingAttributes = new InkDrawingAttributes(); drawingAttributes.Color = Windows.UI.Colors.Red; double penSize = 4; drawingAttributes.Size = new Windows.Foundation.Size(penSize, penSize); drawingAttributes.IgnorePressure = false; drawingAttributes.FitToCurve = true; // Show the available recognizers inkRecognizerContainer = new InkRecognizerContainer(); recoView = inkRecognizerContainer.GetRecognizers(); if (recoView.Count > 0) { foreach (InkRecognizer recognizer in recoView) { RecoName.Items.Add(recognizer.Name); } } else { RecoName.IsEnabled = false; RecoName.Items.Add("No Recognizer Available"); } RecoName.SelectedIndex = 0; // Set the text services so we can query when language changes textServiceManager = CoreTextServicesManager.GetForCurrentView(); textServiceManager.InputLanguageChanged += TextServiceManager_InputLanguageChanged; SetDefaultRecognizerByCurrentInputMethodLanguageTag(); // Initialize the InkCanvas inkCanvas.InkPresenter.UpdateDefaultDrawingAttributes(drawingAttributes); inkCanvas.InkPresenter.InputDeviceTypes = Windows.UI.Core.CoreInputDeviceTypes.Mouse | Windows.UI.Core.CoreInputDeviceTypes.Pen | Windows.UI.Core.CoreInputDeviceTypes.Touch; this.SizeChanged += Scenario2_SizeChanged; }
public Scenario2() { this.InitializeComponent(); // Initialize drawing attributes. These are used in inking mode. InkDrawingAttributes drawingAttributes = new InkDrawingAttributes(); drawingAttributes.Color = Windows.UI.Colors.Red; double penSize = 4; drawingAttributes.Size = new Windows.Foundation.Size(penSize, penSize); drawingAttributes.IgnorePressure = false; drawingAttributes.FitToCurve = true; // Show the available recognizers inkRecognizerContainer = new InkRecognizerContainer(); recoView = inkRecognizerContainer.GetRecognizers(); if (recoView.Count > 0) { foreach (InkRecognizer recognizer in recoView) { RecoName.Items.Add(recognizer.Name); } } else { RecoName.IsEnabled = false; RecoName.Items.Add("No Recognizer Available"); } RecoName.SelectedIndex = 0; // Set the text services so we can query when language changes textServiceManager = CoreTextServicesManager.GetForCurrentView(); textServiceManager.InputLanguageChanged += TextServiceManager_InputLanguageChanged; SetDefaultRecognizerByCurrentInputMethodLanguageTag(); // Initialize reco tooltip recoTooltip = new ToolTip(); recoTooltip.Content = InstallRecoText; ToolTipService.SetToolTip(InstallReco, recoTooltip); // Initialize the InkCanvas inkCanvas.InkPresenter.UpdateDefaultDrawingAttributes(drawingAttributes); inkCanvas.InkPresenter.InputDeviceTypes = Windows.UI.Core.CoreInputDeviceTypes.Mouse | Windows.UI.Core.CoreInputDeviceTypes.Pen | Windows.UI.Core.CoreInputDeviceTypes.Touch; this.Unloaded += Scenario2_Unloaded; this.SizeChanged += Scenario2_SizeChanged; }
private void Page_Loaded(object sender, RoutedEventArgs e) { Container = new InkRecognizerContainer(); var recognizers = Container.GetRecognizers(); if (recognizers != null && recognizers.Count > 0) { // 以下為取得目前的語系, 並設定使用目前語系的辨識引擎 string recognizerName = InkRecognizerHelper.LanguageTagToRecognizerName(CultureInfo.CurrentCulture.Name); var recognizer = recognizers.FirstOrDefault((x) => x.Name == recognizerName); if (recognizer != null) { Container.SetDefaultRecognizer(recognizer); } } }
private async void recognize_Click(object sender, RoutedEventArgs e) { if (inkCanvas.InkPresenter.StrokeContainer.GetStrokes().Count == 0) { return; } InkRecognizerContainer container = new InkRecognizerContainer(); lblMsg.Text = "手写识别器: "; lblMsg.Text += Environment.NewLine; // 获取当前支持的手写识别器列表,如果有多个的话可以通过 SetDefaultRecognizer 方法来指定默认的手写识别器 IReadOnlyList <InkRecognizer> recognizers = container.GetRecognizers(); foreach (InkRecognizer ir in recognizers) { lblMsg.Text += ir.Name; lblMsg.Text += Environment.NewLine; } lblMsg.Text += Environment.NewLine; lblMsg.Text += "识别结果: "; lblMsg.Text += Environment.NewLine; IReadOnlyList <InkRecognitionResult> result = await container.RecognizeAsync(inkCanvas.InkPresenter.StrokeContainer, InkRecognitionTarget.All); foreach (string textCandidate in result[0].GetTextCandidates()) { lblMsg.Text += textCandidate; lblMsg.Text += Environment.NewLine; } // 将识别结果通知给 InkStrokeContainer inkCanvas.InkPresenter.StrokeContainer.UpdateRecognitionResults(result); // 识别结果通知给 InkStrokeContainer 后,被识别的 InkStroke 的 Recognized 将被标记为 true // 如果在识别的时候使用的是 InkRecognitionTarget.All 则所有的 InkStroke 的 Recognized 将被标记为 true // 如果在识别的时候使用的是 InkRecognitionTarget.Selected 则被选中的 InkStroke 的 Recognized 将被标记为 true IReadOnlyList <InkStroke> strokes = inkCanvas.InkPresenter.StrokeContainer.GetStrokes(); foreach (InkStroke stroke in strokes) { Debug.WriteLine("stroke.Recognized: " + stroke.Recognized); } // 这个获取到的就是之前通过 InkStrokeContainer 方式设置的数据 result = inkCanvas.InkPresenter.StrokeContainer.GetRecognitionResults(); }
async private void Button_Click(object sender, RoutedEventArgs e) { try { var container = new InkRecognizerContainer(); var recognizers = container.GetRecognizers(); if (recognizers != null && recognizers.Count > 0) { // 以下三行為取得Combobox選擇語系, 並設定語系的辨識引擎 string recognizerName = recognizersCombobox.SelectedItem.ToString(); var recognizer = recognizers.FirstOrDefault((x) => x.Name == recognizerName); if (recognizer != null) { container.SetDefaultRecognizer(recognizer); } } if (inkCanvas.InkPresenter.StrokeContainer != null) { var result = await container.RecognizeAsync(inkCanvas.InkPresenter.StrokeContainer, InkRecognitionTarget.All); string returnText = string.Empty; inkCanvas.InkPresenter.StrokeContainer.Clear(); Candidates.Clear(); foreach (var r in result) { foreach (var c in r.GetTextCandidates()) { Candidates.Add(c); } } listview.Visibility = Visibility.Visible; button.Visibility = Visibility.Collapsed; } } catch (Exception ex) { Debug.WriteLine(ex.ToString()); } //if (result != null) //{ // returnText = result[0].GetTextCandidates()[0]; //} //OnRecognized(returnText); }
public static async Task <string> Recognize(this InkCanvas inkCanvas) { var strokes = inkCanvas.InkPresenter.StrokeContainer; if (strokes.GetStrokes().Any()) { var recognizer = new InkRecognizerContainer(); var results = await recognizer.RecognizeAsync(strokes, InkRecognitionTarget.All); var candidates = results.Select(x => x.GetTextCandidates().First()); return(string.Join(" ", candidates)); } else { return(string.Empty); } }
public SightDetailPage() { InitializeComponent(); NotesInkCanvas.InkPresenter.InputDeviceTypes = CoreInputDeviceTypes.Mouse | CoreInputDeviceTypes.Pen | CoreInputDeviceTypes.Touch; _inkRecognizerContainer = new InkRecognizerContainer(); #region InkToolbarControl _imageInkPresenter = ImageInkCanvas.InkPresenter; _imageInkPresenter.InputDeviceTypes = CoreInputDeviceTypes.Mouse | CoreInputDeviceTypes.Touch | CoreInputDeviceTypes.Pen; #endregion }
// </SnippetChangeRecognizer> // <SnippetInitializeRecognizerList> // Populate the recognizer combo box with installed recognizers. private void InitializeRecognizerList() { // <SnippetInkRecognizerContainer> // Create a manager for the handwriting recognition process. inkRecognizerContainer = new InkRecognizerContainer(); // </SnippetInkRecognizerContainer> // <SnippetGetRecognizers> // Retrieve the collection of installed handwriting recognizers. IReadOnlyList <InkRecognizer> installedRecognizers = inkRecognizerContainer.GetRecognizers(); // </SnippetGetRecognizers> // inkRecognizerContainer is null if a recognition engine is not available. if (!(inkRecognizerContainer == null)) { comboInstalledRecognizers.ItemsSource = installedRecognizers; } }
async Task OnRecognizeAsync(InkRecognitionTarget target) { // Note that you can interrogate this object for language support but we're // leaving this set to the default. var inkRecognizerContainer = new InkRecognizerContainer(); // We ask for recognition and we get back a 'list' of results where // each one of those contains a var recognitionResults = await inkRecognizerContainer.RecognizeAsync( this.inkStrokeContainer, target); // We could just iterate through the recognition results now but, instead, // we update the stroke container with those results so that it will store // them for us. this.inkStrokeContainer.UpdateRecognitionResults(recognitionResults); this.UpdateStrokesView(); }
async private void Button_Click(object sender, RoutedEventArgs e) { var container = new InkRecognizerContainer(); var recognizers = container.GetRecognizers(); if (recognizers != null && recognizers.Count > 0) { // 以下三行為取得目前的語系, 並設定使用目前語系的辨識引擎 string recognizerName = InkRecognizerHelper.LanguageTagToRecognizerName(CultureInfo.CurrentCulture.Name); var recognizer = recognizers.FirstOrDefault((x) => x.Name == recognizerName); if (recognizer != null) { container.SetDefaultRecognizer(recognizer); } } var result = await container.RecognizeAsync(inkCanvas.InkPresenter.StrokeContainer, InkRecognitionTarget.All); }
/// <summary> /// Do some amazing calculations. Store calculation and result in SQL. /// </summary> private async void EqualsButton_Click(object sender, RoutedEventArgs e) { if (MyInkCanvas.InkPresenter.StrokeContainer.GetStrokes().Any()) { var inkRecognizerContainer = new InkRecognizerContainer(); var results = await inkRecognizerContainer.RecognizeAsync(MyInkCanvas.InkPresenter.StrokeContainer, InkRecognitionTarget.All); var recognizedText = string.Concat(results.Select(i => i.GetTextCandidates()[0])); ResultsTextBlock.Text = Calculation.NetStandard.Calculator.Calculate(recognizedText).ToString(); MyInkCanvas.InkPresenter.StrokeContainer.Clear(); } else { ResultsTextBlock.Text = Calculation.NetStandard.Calculator.Calculate(ResultsTextBlock.Text).ToString(); } HistoryCollection = new ObservableCollection <string>(CalculationHistory.FetchEntireHistory()); }
public MainPage() { this.InitializeComponent(); InkDrawingAttributes drawingAttributes = new InkDrawingAttributes(); drawingAttributes.Color = Windows.UI.Colors.Black; drawingAttributes.Size = new Size(4, 4); drawingAttributes.IgnorePressure = false; drawingAttributes.FitToCurve = true; inkRecognizerContainer = new InkRecognizerContainer(); recoView = inkRecognizerContainer.GetRecognizers(); if (recoView.Count > 0) { foreach (InkRecognizer recognizer in recoView) { RecoName.Items.Add(recognizer.Name); } } else { RecoName.IsEnabled = false; RecoName.Items.Add("No Recognizer Available"); } RecoName.SelectedIndex = 0; InkCanvas.InkPresenter.UpdateDefaultDrawingAttributes(drawingAttributes); InkCanvas.InkPresenter.InputDeviceTypes = Windows.UI.Core.CoreInputDeviceTypes.Mouse | Windows.UI.Core.CoreInputDeviceTypes.Pen | Windows.UI.Core.CoreInputDeviceTypes.Touch; // 音声合成の追加 synthesizer = new SpeechSynthesizer(); }
public SightDetailPage() { InitializeComponent(); //Insert the M2_NotesInputs snippet here // Set up the NotesInkCanvas input types NotesInkCanvas.InkPresenter.InputDeviceTypes = CoreInputDeviceTypes.Mouse | CoreInputDeviceTypes.Pen | CoreInputDeviceTypes.Touch; // Insert the M2_SetupRecognizers snippet here _inkRecognizerContainer = new InkRecognizerContainer(); #region InkToolbarControl _imageInkPresenter = ImageInkCanvas.InkPresenter; _imageInkPresenter.InputDeviceTypes = CoreInputDeviceTypes.Mouse | CoreInputDeviceTypes.Touch | CoreInputDeviceTypes.Pen; #endregion }