Пример #1
0
        private void CaptureAllScreens()
        {
            Task.Run(async() =>
            {
                await Task.Delay(500);

                var screenshots = _machineContext
                                  .CaptureAllScreens()
                                  .ToList();

                var width  = 0;
                var height = 0;

                foreach (var image in screenshots)
                {
                    width += image.Width;
                    height = image.Height > height
                        ? image.Height
                        : height;
                }

                _screenshot = new Bitmap(width, height);
                using (var graphics = Graphics.FromImage(_screenshot))
                {
                    var localWidth = 0;
                    foreach (var image in screenshots)
                    {
                        graphics.DrawImage(image, localWidth, 0);
                        localWidth += image.Width;
                    }
                }

                var bitmapSource = _imageService.GetBitmapSource(_screenshot);
                bitmapSource.Freeze();

                Dispatcher.CurrentDispatcher.Invoke(() =>
                {
                    WindowVisibility = Visibility.Visible;
                    CapturedImage    = bitmapSource;
                    IsLoading        = false;
                });

                var ocrResult = await _OCRService.GetText(SelectedOCRLanguage, _screenshot);

                Dispatcher.CurrentDispatcher.Invoke(() =>
                {
                    OCRResult    = ocrResult;
                    IsOCRLoading = false;
                });
            });

            WindowVisibility = Visibility.Hidden;
        }