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);
                }
            }
        }
Example #2
0
        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();
        }
Example #3
0
        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;
            }
        }
Example #5
0
        /// <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
            {
            }
        }
Example #6
0
        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;
        }
Example #7
0
        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.");
            }
        }
Example #8
0
        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());
            }
        }
Example #9
0
        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();
        }
Example #10
0
        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;
        }
Example #11
0
        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;
            }
        }
Example #13
0
        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.");
            }
        }
Example #14
0
        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();
        }
Example #15
0
        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";
            }
        }
Example #16
0
        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);
                }
            }
        }
Example #21
0
        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);
        }
Example #23
0
        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);
            }
        }
Example #24
0
        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
        }
Example #25
0
        // </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;
            }
        }
Example #26
0
        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();
        }
Example #27
0
        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());
        }
Example #29
0
        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();
        }
Example #30
0
        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
        }