Exemplo n.º 1
0
        protected override void DoWork()
        {
            _workerTask = Task.Run(() =>
            {
                while (IsRunning)
                {
                    _stopWatch.Start();

                    byte[] byteImage = new byte[0];
                    _screenCaptureService.CaptureScreenshot(ref byteImage);

                    // If game handle is not set we will get an empty array. Just do nothing.
                    if (byteImage == null)
                    {
                        HaltUntilNextInterval();
                    }

                    var captureArgs = new ScreenCaptureCompletedArgs
                    {
                        ScreenImageStream = byteImage,
                        ScreenBounds      = _screenCaptureService.ScreenOptions.GetBoundsAsRectangle()
                    };

                    OnScreenCaptureCompleted(captureArgs);

                    if (!AutoReset)
                    {
                        IsRunning = false;
                        break;
                    }

                    HaltUntilNextInterval();
                }
            });
        }
Exemplo n.º 2
0
        internal void screenCaptureWorker_ScreenCaptureCompleted(object sender, ScreenCaptureCompletedArgs captureArgs)
        {
            var imageStream        = new MemoryStream(captureArgs.ScreenImageStream);
            var screenCaptureImage = new BitmapImage();

            screenCaptureImage.BeginInit();
            screenCaptureImage.StreamSource = imageStream;
            screenCaptureImage.CacheOption  = BitmapCacheOption.OnLoad;
            screenCaptureImage.EndInit();
            screenCaptureImage.Freeze();

            Application.Current.Dispatcher.Invoke(() =>
            {
                ScreenCaptureBrush = new ImageBrush(screenCaptureImage);
            });
        }
Exemplo n.º 3
0
        internal void screenCaptureWorker_ScreenCaptureCompleted(object sender, ScreenCaptureCompletedArgs captureArgs)
        {
            if (captureArgs.ScreenBounds.Height == 0 || captureArgs.ScreenBounds.Width == 0)
            {
                return;
            }

            var imageStream = new MemoryStream(captureArgs.ScreenImageStream);

            ScreenCaptureQueue.Enqueue(new ScreenCapture()
            {
                ScreenMemoryStream = imageStream,
                RegionViewModels   = ViewModel.RegionControl.Regions,
                ScreenBounds       = captureArgs.ScreenBounds,
                CanvasBounds       = captureArgs.CanvasBounds,
                CreationTime       = DateTime.Now
            });
        }
Exemplo n.º 4
0
 private void OnScreenCaptureCompleted(ScreenCaptureCompletedArgs captureArgs)
 {
     ScreenCaptureCompleted?.Invoke(this, captureArgs);
 }