private void tbCaptureDesktop_Click(object sender, RoutedEventArgs e)
        {
            this.Hide();

            ExternalWindow?.Hide();

            WindowUtilities.DoEvents();

            var screen = Screen.FromHandle(WindowHandle);
            var img    = ScreenCapture.CaptureWindow(screen.Bounds);

            ImageCaptured.Source = ScreenCapture.ImageToBitmapSource(img);

            CapturedBitmap?.Dispose();
            CapturedBitmap = new Bitmap(img);

            StatusText.Text = $"Desktop captured Image: {CapturedBitmap.Width}x{CapturedBitmap.Height}";
            ExternalWindow?.Show();

            this.Topmost = true;
            this.Show();
            WindowUtilities.DoEvents();

            ScreenCaptureForm_SizeChanged(this, null);
        }
예제 #2
0
        /// <summary>
        /// Release all allocated/locked resources
        /// </summary>
        public void Dispose()
        {
            if (MasterBitmap != null)
            {
                MasterBitmap.Dispose(); MasterBitmap = null;
            }
            if (CapturedBitmapBeforeFilters != null)
            {
                CapturedBitmapBeforeFilters.Dispose(); CapturedBitmapBeforeFilters = null;
            }
            if (CapturedBitmap != null)
            {
                CapturedBitmap.Dispose(); CapturedBitmap = null;
            }

            if (MasterModel != null)
            {
                MasterModel.Close(); MasterModel = null;
            }
            if (CapturedModelBeforeFilters != null)
            {
                CapturedModelBeforeFilters.Close(); CapturedModelBeforeFilters = null;
            }
            if (CapturedModel != null)
            {
                CapturedModel.Close(); CapturedModel = null;
            }
        }
        private void tbSave_Click(object sender, RoutedEventArgs e)
        {
            if (string.IsNullOrEmpty(SaveFolder))
            {
                SaveFolder = Path.GetTempPath();
            }

            SaveFileDialog sd = new SaveFileDialog
            {
                Filter             = "png files (*.png)|*.png|jpg files (*.jpg)|*.jpg",
                FilterIndex        = 1,
                FileName           = "",
                CheckFileExists    = false,
                OverwritePrompt    = false,
                AutoUpgradeEnabled = true,
                CheckPathExists    = true,
                InitialDirectory   = SaveFolder,
                RestoreDirectory   = true
            };
            var result = sd.ShowDialog();

            if (result != System.Windows.Forms.DialogResult.OK)
            {
                return;
            }

            SavedImageFile = sd.FileName;
            try
            {
                CapturedBitmap?.Save(SavedImageFile);
            }
            catch (Exception ex)
            {
                Cancelled       = true;
                StatusText.Text = "Error saving image: " + ex.Message;
                return;
            }

            if (!string.IsNullOrEmpty(ResultFilePath))
            {
                File.WriteAllText(ResultFilePath, SavedImageFile);
            }

            Cancelled = false;

            if (AutoClose)
            {
                Close();
            }

            ExternalWindow?.Show();
            ExternalWindow?.Activate();

            if (WindowState != WindowState.Maximized && WindowState != WindowState.Minimized)
            {
                ScreenCaptureConfiguration.Current.WindowWidth  = this.Width;
                ScreenCaptureConfiguration.Current.WindowHeight = this.Width;
            }
        }
        private void tbPasteImage_Click(object sender, RoutedEventArgs e)
        {
            if (System.Windows.Clipboard.ContainsImage())
            {
                CapturedBitmap?.Dispose();
                CapturedBitmap       = new Bitmap(System.Windows.Forms.Clipboard.GetImage());
                ImageCaptured.Source = ScreenCapture.BitmapToBitmapSource(CapturedBitmap);
                StatusText.Text      = $"Pasted Image from Clipboard: {CapturedBitmap.Width}x{CapturedBitmap.Height}";

                ScreenCaptureForm_SizeChanged(this, null);
            }
        }
        private void ScreenCaptureForm_Unloaded(object sender, RoutedEventArgs e)
        {
            Overlay?.Close();
            CapturedBitmap?.Dispose();
            CaptureTimer?.Dispose();

            try
            {
                UserActivityHook.KeyDown         -= UserActivityHook_KeyDown;
                UserActivityHook.OnMouseActivity -= UserActivityHook_OnMouseActivity;
                UserActivityHook.Stop();
            }
            catch { }

            if (WindowState == WindowState.Normal)
            {
                ScreenCaptureConfiguration.Current.WindowHeight = Height;
                ScreenCaptureConfiguration.Current.WindowWidth  = Width;
                ScreenCaptureConfiguration.Current.Write();
            }
        }
        private void tbPasteImage_Click(object sender, RoutedEventArgs e)
        {
            if (ClipboardHelper.ContainsImage())
            {
                CapturedBitmap?.Dispose();


                var image = ClipboardHelper.GetImage();
                if (image == null)
                {
                    StatusBar.ShowStatusError("Couldn't retrieve image from clipboard.");
                    return;
                }

                CapturedBitmap       = new Bitmap(image);
                ImageCaptured.Source = ScreenCapture.BitmapToBitmapSource(CapturedBitmap);
                StatusText.Text      = $"Pasted Image from Clipboard: {CapturedBitmap.Width}x{CapturedBitmap.Height}";

                ScreenCaptureForm_SizeChanged(this, null);
            }
        }
 tbClearImage_Click(object sender, RoutedEventArgs e)
 {
     CapturedBitmap?.Dispose();
     CapturedBitmap       = null;
     ImageCaptured.Source = null;
 }