Ejemplo n.º 1
0
        public RegionCaptureForm(RegionCaptureMode mode)
        {
            Mode = mode;

            ScreenRectangle       = CaptureHelpers.GetScreenBounds();
            ScreenRectangle0Based = CaptureHelpers.ScreenToClient(ScreenRectangle);
            ImageRectangle        = ScreenRectangle0Based;

            InitializeComponent();

            Config              = new RegionCaptureOptions();
            DrawableObjects     = new List <DrawableObject>();
            timerStart          = new Stopwatch();
            timerFPS            = new Stopwatch();
            colorBlinkAnimation = new ColorBlinkAnimation();

            borderPen    = new Pen(Color.Black);
            borderDotPen = new Pen(Color.White)
            {
                DashPattern = new float[] { 5, 5 }
            };
            nodeBackgroundBrush = new SolidBrush(Color.White);
            infoFont            = new Font("Verdana", 9);
            infoFontMedium      = new Font("Verdana", 12);
            infoFontBig         = new Font("Verdana", 16, FontStyle.Bold);
            textBackgroundBrush = new SolidBrush(Color.FromArgb(150, Color.FromArgb(42, 131, 199)));
            textOuterBorderPen  = new Pen(Color.FromArgb(150, Color.White));
            textInnerBorderPen  = new Pen(Color.FromArgb(150, Color.FromArgb(0, 81, 145)));
            markerPen           = new Pen(Color.FromArgb(200, Color.Red));
        }
Ejemplo n.º 2
0
        public BaseRegionForm()
        {
            ScreenRectangle       = CaptureHelpers.GetScreenBounds();
            ScreenRectangle0Based = CaptureHelpers.ScreenToClient(ScreenRectangle);

            InitializeComponent();
            Icon   = ShareXResources.Icon;
            Cursor = Helpers.CreateCursor(Resources.Crosshair);

            DrawableObjects = new List <DrawableObject>();
            Config          = new RegionCaptureOptions();
            timerStart      = new Stopwatch();
            timerFPS        = new Stopwatch();

            borderPen                = new Pen(Color.Black);
            borderDotPen             = new Pen(Color.White);
            borderDotPen.DashPattern = new float[] { 5, 5 };
            nodeBackgroundBrush      = new SolidBrush(Color.White);
            infoFont               = new Font("Verdana", 9);
            infoFontMedium         = new Font("Verdana", 12);
            infoFontBig            = new Font("Verdana", 16, FontStyle.Bold);
            textBackgroundBrush    = new SolidBrush(Color.FromArgb(75, Color.Black));
            textBackgroundPenWhite = new Pen(Color.FromArgb(50, Color.White));
            textBackgroundPenBlack = new Pen(Color.FromArgb(150, Color.Black));
            markerPen              = new Pen(Color.FromArgb(200, Color.Red));
        }
Ejemplo n.º 3
0
        public ScrollingCaptureForm(ScrollingCaptureOptions options, RegionCaptureOptions regionCaptureOptions, bool forceSelection = false)
        {
            Options = options;
            RegionCaptureOptions = regionCaptureOptions;

            InitializeComponent();
            Icon = ShareXResources.Icon;

            cbScrollMethod.Items.AddRange(Helpers.GetLocalizedEnumDescriptions<ScrollingCaptureScrollMethod>());
            cbScrollMethod.SelectedIndex = (int)Options.ScrollMethod;
            cbScrollTopMethodBeforeCapture.Items.AddRange(Helpers.GetLocalizedEnumDescriptions<ScrollingCaptureScrollTopMethod>());
            cbScrollTopMethodBeforeCapture.SelectedIndex = (int)Options.ScrollTopMethodBeforeCapture;
            nudStartDelay.SetValue(Options.StartDelay);
            nudScrollDelay.SetValue(Options.ScrollDelay);
            nudMaximumScrollCount.SetValue(Options.MaximumScrollCount);
            cbStartSelectionAutomatically.Checked = Options.StartSelectionAutomatically;
            cbStartCaptureAutomatically.Checked = Options.StartCaptureAutomatically;
            cbAutoDetectScrollEnd.Checked = Options.AutoDetectScrollEnd;
            cbRemoveDuplicates.Checked = Options.RemoveDuplicates;
            cbAutoCombine.Checked = Options.AfterCaptureAutomaticallyCombine;
            chkAutoUpload.Checked = Options.AutoUpload;

            if (forceSelection || Options.StartSelectionAutomatically)
            {
                if (Options.StartCaptureAutomatically)
                {
                    WindowState = FormWindowState.Minimized;
                }

                SelectHandle();
            }
        }
Ejemplo n.º 4
0
        public EditorStartupForm(RegionCaptureOptions options)
        {
            Options = options;

            InitializeComponent();
            ShareXResources.ApplyTheme(this);
        }
Ejemplo n.º 5
0
        public BaseRegionForm()
        {
            ScreenRectangle = CaptureHelpers.GetScreenBounds();
            ScreenRectangle0Based = CaptureHelpers.ScreenToClient(ScreenRectangle);

            InitializeComponent();
            Icon = ShareXResources.Icon;
            Cursor = Helpers.CreateCursor(Resources.Crosshair);

            drawableObjects = new List<DrawableObject>();
            Config = new RegionCaptureOptions();
            timerStart = new Stopwatch();
            timerFPS = new Stopwatch();

            borderPen = new Pen(Color.Black);
            borderDotPen = new Pen(Color.White);
            borderDotPen.DashPattern = new float[] { 5, 5 };
            nodeBackgroundBrush = new SolidBrush(Color.White);
            infoFont = new Font("Verdana", 9);
            infoFontMedium = new Font("Verdana", 12);
            infoFontBig = new Font("Verdana", 16, FontStyle.Bold);
            textBackgroundBrush = new SolidBrush(Color.FromArgb(75, Color.Black));
            textBackgroundPenWhite = new Pen(Color.FromArgb(50, Color.White));
            textBackgroundPenBlack = new Pen(Color.FromArgb(150, Color.Black));
            markerPen = new Pen(Color.FromArgb(200, Color.Red));
        }
Ejemplo n.º 6
0
        public ScrollingCaptureForm(ScrollingCaptureOptions options, RegionCaptureOptions regionCaptureOptions, bool forceSelection = false)
        {
            Options = options;
            RegionCaptureOptions = regionCaptureOptions;

            InitializeComponent();
            ShareXResources.ApplyTheme(this);

            cbScrollMethod.Items.AddRange(Helpers.GetLocalizedEnumDescriptions <ScrollingCaptureScrollMethod>());
            cbScrollMethod.SelectedIndex = (int)Options.ScrollMethod;
            cbScrollTopMethodBeforeCapture.Items.AddRange(Helpers.GetLocalizedEnumDescriptions <ScrollingCaptureScrollTopMethod>());
            cbScrollTopMethodBeforeCapture.SelectedIndex = (int)Options.ScrollTopMethodBeforeCapture;
            nudStartDelay.SetValue(Options.StartDelay);
            nudScrollDelay.SetValue(Options.ScrollDelay);
            nudMaximumScrollCount.SetValue(Options.MaximumScrollCount);
            cbStartSelectionAutomatically.Checked = Options.StartSelectionAutomatically;
            cbStartCaptureAutomatically.Checked   = Options.StartCaptureAutomatically;
            cbAutoDetectScrollEnd.Checked         = Options.AutoDetectScrollEnd;
            cbRemoveDuplicates.Checked            = Options.RemoveDuplicates;
            cbAutoCombine.Checked = Options.AfterCaptureAutomaticallyCombine;
            chkAutoUpload.Checked = Options.AutoUpload;

            if (forceSelection || Options.StartSelectionAutomatically)
            {
                if (Options.StartCaptureAutomatically)
                {
                    WindowState = FormWindowState.Minimized;
                }

                SelectHandle();
            }
        }
Ejemplo n.º 7
0
        public static Image ApplyRegionPathToImage(Image backgroundImage, GraphicsPath regionFillPath, RegionCaptureOptions options)
        {
            if (backgroundImage != null && regionFillPath != null)
            {
                Image img;

                Rectangle regionArea = Rectangle.Round(regionFillPath.GetBounds());
                Rectangle screenRectangle = CaptureHelpers.GetScreenBounds0Based();
                Rectangle newRegionArea = Rectangle.Intersect(regionArea, screenRectangle);

                using (GraphicsPath gp = (GraphicsPath)regionFillPath.Clone())
                {
                    using (Matrix matrix = new Matrix())
                    {
                        gp.CloseFigure();
                        matrix.Translate(-Math.Max(0, regionArea.X), -Math.Max(0, regionArea.Y));
                        gp.Transform(matrix);
                    }

                    img = ImageHelpers.CropImage(backgroundImage, newRegionArea, gp);
                }

                return img;
            }

            return null;
        }
Ejemplo n.º 8
0
        public static void ShowScreenColorPickerDialog(RegionCaptureOptions options)
        {
            Color           color           = Color.Red;
            ColorPickerForm colorPickerForm = new ColorPickerForm(color, true);

            colorPickerForm.EnableScreenColorPickerButton(() => GetPointInfo(options));
            colorPickerForm.Show();
        }
Ejemplo n.º 9
0
        public static void ShowScreenRuler(RegionCaptureOptions options)
        {
            RegionCaptureOptions newOptions = GetRegionCaptureOptions(options);

            newOptions.QuickCrop = false;

            using (RegionCaptureForm form = new RegionCaptureForm(RegionCaptureMode.Ruler, newOptions))
            {
                form.ShowDialog();
            }
        }
Ejemplo n.º 10
0
        public static Bitmap GetRegionImage(RegionCaptureOptions options)
        {
            RegionCaptureOptions newOptions = GetRegionCaptureOptions(options);

            using (RegionCaptureForm form = new RegionCaptureForm(RegionCaptureMode.Default, newOptions))
            {
                form.ShowDialog();

                return(form.GetResultImage());
            }
        }
Ejemplo n.º 11
0
        public static Image AnnotateImage(string filePath, RegionCaptureOptions options)
        {
            if (File.Exists(filePath))
            {
                using (Image img = ImageHelpers.LoadImage(filePath))
                {
                    return(AnnotateImage(img, options));
                }
            }

            return(null);
        }
Ejemplo n.º 12
0
        public static void ShowScreenRuler(RegionCaptureOptions options)
        {
            using (RegionCaptureForm form = new RegionCaptureForm(RegionCaptureMode.Ruler))
            {
                form.Config           = GetRegionCaptureOptions(options);
                form.Config.QuickCrop = false;
                form.Config.ShowTips  = false;

                form.Prepare();
                form.ShowDialog();
            }
        }
Ejemplo n.º 13
0
        public static Image GetRegionImage(RegionCaptureOptions options)
        {
            using (RegionCaptureForm form = new RegionCaptureForm(RegionCaptureMode.Default))
            {
                form.Config          = GetRegionCaptureOptions(options);
                form.Config.ShowTips = false;

                form.Prepare();
                form.ShowDialog();

                return(form.GetResultImage());
            }
        }
Ejemplo n.º 14
0
        public static Image GetRegionImage(RegionCaptureOptions options)
        {
            using (RegionCaptureForm form = new RegionCaptureForm(RegionCaptureMode.Default))
            {
                form.Config = GetRegionCaptureOptions(options);
                form.Config.ShowTips = false;

                form.Prepare();
                form.ShowDialog();

                return form.GetResultImage();
            }
        }
Ejemplo n.º 15
0
        public static void ShowScreenRuler(RegionCaptureOptions options)
        {
            RegionCaptureOptions newOptions = GetRegionCaptureOptions(options);

            newOptions.QuickCrop           = false;
            newOptions.MultipleRegions     = false;
            newOptions.UseLightResizeNodes = true;

            using (RegionCaptureForm form = new RegionCaptureForm(RegionCaptureMode.Ruler, newOptions))
            {
                form.ShowDialog();
            }
        }
Ejemplo n.º 16
0
        public static Image GetRegionImage(RegionCaptureOptions options)
        {
            RegionCaptureOptions newOptions = GetRegionCaptureOptions(options);

            newOptions.ShowHotkeys = false;

            using (RegionCaptureForm form = new RegionCaptureForm(RegionCaptureMode.Default, newOptions))
            {
                form.Prepare();
                form.ShowDialog();

                return(form.GetResultImage());
            }
        }
Ejemplo n.º 17
0
        public NewImageForm(RegionCaptureOptions options)
        {
            InitializeComponent();
            ShareXResources.ApplyThemeToForm(this);

            Options = options;

            nudWidth.TextChanged  += NudWidth_TextChanged;
            nudHeight.TextChanged += NudHeight_TextChanged;

            nudWidth.Value        = Options.EditorNewImageSize.Width;
            nudHeight.Value       = Options.EditorNewImageSize.Height;
            cbTransparent.Checked = Options.EditorNewImageTransparent;
            btnChangeColor.Color  = options.EditorNewImageBackgroundColor;
        }
Ejemplo n.º 18
0
        public static bool GetRectangleRegion(out Rectangle rect, RegionCaptureOptions options)
        {
            RegionCaptureOptions newOptions = GetRegionCaptureOptions(options);

            newOptions.ShowHotkeys = false;

            using (RegionCaptureForm form = new RegionCaptureForm(RegionCaptureMode.Default, newOptions))
            {
                form.Prepare();
                form.ShowDialog();

                if (form.Result == RegionResult.Region)
                {
                    if (form.ShapeManager.IsCurrentShapeValid)
                    {
                        rect = CaptureHelpers.ClientToScreen(form.ShapeManager.CurrentRectangle);
                        return(true);
                    }
                }
                else if (form.Result == RegionResult.Fullscreen)
                {
                    rect = CaptureHelpers.GetScreenBounds();
                    return(true);
                }
                else if (form.Result == RegionResult.Monitor)
                {
                    Screen[] screens = Screen.AllScreens;

                    if (form.MonitorIndex < screens.Length)
                    {
                        Screen screen = screens[form.MonitorIndex];
                        rect = screen.Bounds;
                        return(true);
                    }
                }
                else if (form.Result == RegionResult.ActiveMonitor)
                {
                    rect = CaptureHelpers.GetActiveScreenBounds();
                    return(true);
                }
            }

            rect = Rectangle.Empty;
            return(false);
        }
Ejemplo n.º 19
0
        public static bool GetRectangleRegion(out Rectangle rect, RegionCaptureOptions options)
        {
            using (RegionCaptureForm form = new RegionCaptureForm(RegionCaptureMode.Default))
            {
                form.Config = GetRegionCaptureOptions(options);
                form.Config.ShowTips = false;

                form.Prepare();
                form.ShowDialog();

                if (form.Result == RegionResult.Region)
                {
                    if (form.ShapeManager.IsCurrentShapeValid)
                    {
                        rect = CaptureHelpers.ClientToScreen(form.ShapeManager.CurrentRectangle);
                        return true;
                    }
                }
                else if (form.Result == RegionResult.Fullscreen)
                {
                    rect = CaptureHelpers.GetScreenBounds();
                    return true;
                }
                else if (form.Result == RegionResult.Monitor)
                {
                    Screen[] screens = Screen.AllScreens;

                    if (form.MonitorIndex < screens.Length)
                    {
                        Screen screen = screens[form.MonitorIndex];
                        rect = screen.Bounds;
                        return true;
                    }
                }
                else if (form.Result == RegionResult.ActiveMonitor)
                {
                    rect = CaptureHelpers.GetActiveScreenBounds();
                    return true;
                }
            }

            rect = Rectangle.Empty;
            return false;
        }
Ejemplo n.º 20
0
        public static SimpleWindowInfo GetWindowInfo(RegionCaptureOptions options)
        {
            RegionCaptureOptions newOptions = GetRegionCaptureOptions(options);

            newOptions.UseDimming    = false;
            newOptions.ShowMagnifier = false;

            using (RegionCaptureForm form = new RegionCaptureForm(RegionCaptureMode.OneClick, newOptions))
            {
                form.ShowDialog();

                if (form.Result == RegionResult.Region)
                {
                    return(form.SelectedWindow);
                }
            }

            return(null);
        }
Ejemplo n.º 21
0
        public static void ShowScreenColorPickerDialog(RegionCaptureOptions options, bool checkClipboard = true)
        {
            Color color = Color.Red;

            if (checkClipboard)
            {
                string text = ClipboardHelpers.GetText(true);

                if (!string.IsNullOrEmpty(text) && ColorHelpers.ParseColor(text, out Color clipboardColor))
                {
                    color = clipboardColor;
                }
            }

            ColorPickerForm colorPickerForm = new ColorPickerForm(color, true);

            colorPickerForm.EnableScreenColorPickerButton(() => GetPointInfo(options));
            colorPickerForm.Show();
        }
Ejemplo n.º 22
0
 private static RegionCaptureOptions GetRegionCaptureOptions(RegionCaptureOptions options)
 {
     if (options == null)
     {
         return(new RegionCaptureOptions());
     }
     else
     {
         return(new RegionCaptureOptions()
         {
             SnapSizes = options.SnapSizes,
             ShowMagnifier = options.ShowMagnifier,
             UseSquareMagnifier = options.UseSquareMagnifier,
             MagnifierPixelCount = options.MagnifierPixelCount,
             MagnifierPixelSize = options.MagnifierPixelSize,
             ShowCrosshair = options.ShowCrosshair
         });
     }
 }
Ejemplo n.º 23
0
        public static SimpleWindowInfo GetWindowInfo(RegionCaptureOptions options)
        {
            using (RegionCaptureForm form = new RegionCaptureForm(RegionCaptureMode.OneClick))
            {
                form.Config               = GetRegionCaptureOptions(options);
                form.Config.UseDimming    = false;
                form.Config.ShowMagnifier = false;
                form.Config.ShowTips      = false;

                form.Prepare();
                form.ShowDialog();

                if (form.Result == RegionResult.Region)
                {
                    return(form.SelectedWindow);
                }
            }

            return(null);
        }
Ejemplo n.º 24
0
        public static Image AnnotateImage(Image img, RegionCaptureOptions options)
        {
            using (RegionCaptureForm form = new RegionCaptureForm(RegionCaptureMode.Editor))
            {
                form.Config = GetRegionCaptureOptions(options);
                form.Config.DetectWindows = false;
                form.Config.ShowTips      = false;
                form.Config.UseDimming    = false;

                form.Prepare(img);
                form.ShowDialog();

                if (form.Result == RegionResult.Region)
                {
                    return(form.GetResultImage());
                }
            }

            return(null);
        }
Ejemplo n.º 25
0
 private static RegionCaptureOptions GetRegionCaptureOptions(RegionCaptureOptions options)
 {
     if (options == null)
     {
         return(new RegionCaptureOptions());
     }
     else
     {
         return(new RegionCaptureOptions()
         {
             SnapSizes = options.SnapSizes,
             ShowMagnifier = options.ShowMagnifier,
             UseSquareMagnifier = options.UseSquareMagnifier,
             MagnifierPixelCount = options.MagnifierPixelCount,
             MagnifierPixelSize = options.MagnifierPixelSize,
             ShowCrosshair = options.ShowCrosshair,
             AnnotationOptions = options.AnnotationOptions,
             ScreenColorPickerInfoText = options.ScreenColorPickerInfoText
         });
     }
 }
Ejemplo n.º 26
0
        public static PointInfo GetPointInfo(RegionCaptureOptions options, Bitmap canvas = null)
        {
            RegionCaptureOptions newOptions = GetRegionCaptureOptions(options);

            newOptions.DetectWindows = false;
            newOptions.UseDimming    = false;

            using (RegionCaptureForm form = new RegionCaptureForm(RegionCaptureMode.ScreenColorPicker, newOptions, canvas))
            {
                form.ShowDialog();

                if (form.Result == RegionResult.Region)
                {
                    PointInfo pointInfo = new PointInfo();
                    pointInfo.Position = form.CurrentPosition;
                    pointInfo.Color    = form.ShapeManager.GetCurrentColor();
                    return(pointInfo);
                }
            }

            return(null);
        }
Ejemplo n.º 27
0
        public static Image CreateNewImage(RegionCaptureOptions options, Form form = null)
        {
            using (NewImageForm newImageForm = new NewImageForm(options))
            {
                if (newImageForm.ShowDialog(form) == DialogResult.OK)
                {
                    Color backgroundColor;

                    if (options.EditorNewImageTransparent)
                    {
                        backgroundColor = Color.Transparent;
                    }
                    else
                    {
                        backgroundColor = options.EditorNewImageBackgroundColor;
                    }

                    return(ImageHelpers.CreateBitmap(options.EditorNewImageSize.Width, options.EditorNewImageSize.Height, backgroundColor));
                }
            }

            return(null);
        }
Ejemplo n.º 28
0
        public static PointInfo GetPointInfo(RegionCaptureOptions options)
        {
            using (RegionCaptureForm form = new RegionCaptureForm(RegionCaptureMode.ScreenColorPicker))
            {
                form.Config = GetRegionCaptureOptions(options);
                form.Config.DetectWindows = false;
                form.Config.ShowTips      = false;
                form.Config.UseDimming    = false;

                form.Prepare();
                form.ShowDialog();

                if (form.Result == RegionResult.Region)
                {
                    PointInfo pointInfo = new PointInfo();
                    pointInfo.Position = form.CurrentPosition;
                    pointInfo.Color    = form.CurrentColor;
                    return(pointInfo);
                }
            }

            return(null);
        }
Ejemplo n.º 29
0
        public static void ShowScreenRuler(RegionCaptureOptions options)
        {
            using (RegionCaptureForm form = new RegionCaptureForm(RegionCaptureMode.Ruler))
            {
                form.Config = GetRegionCaptureOptions(options);
                form.Config.QuickCrop = false;
                form.Config.ShowTips = false;

                form.Prepare();
                form.ShowDialog();
            }
        }
Ejemplo n.º 30
0
 private static RegionCaptureOptions GetRegionCaptureOptions(RegionCaptureOptions options)
 {
     if (options == null)
     {
         return new RegionCaptureOptions();
     }
     else
     {
         return new RegionCaptureOptions()
         {
             SnapSizes = options.SnapSizes,
             ShowMagnifier = options.ShowMagnifier,
             UseSquareMagnifier = options.UseSquareMagnifier,
             MagnifierPixelCount = options.MagnifierPixelCount,
             MagnifierPixelSize = options.MagnifierPixelSize,
             ShowCrosshair = options.ShowCrosshair,
             AnnotationOptions = options.AnnotationOptions
         };
     }
 }
Ejemplo n.º 31
0
 public EditorStartupForm(RegionCaptureOptions options)
 {
     InitializeComponent();
     Icon    = ShareXResources.Icon;
     Options = options;
 }
Ejemplo n.º 32
0
        public static PointInfo GetPointInfo(RegionCaptureOptions options)
        {
            using (RegionCaptureForm form = new RegionCaptureForm(RegionCaptureMode.ScreenColorPicker))
            {
                form.Config = GetRegionCaptureOptions(options);
                form.Config.DetectWindows = false;
                form.Config.ShowTips = false;
                form.Config.UseDimming = false;

                form.Prepare();
                form.ShowDialog();

                if (form.Result == RegionResult.Region)
                {
                    PointInfo pointInfo = new PointInfo();
                    pointInfo.Position = form.CurrentPosition;
                    pointInfo.Color = form.CurrentColor;
                    return pointInfo;
                }
            }

            return null;
        }
Ejemplo n.º 33
0
        public static SimpleWindowInfo GetWindowInfo(RegionCaptureOptions options)
        {
            using (RegionCaptureForm form = new RegionCaptureForm(RegionCaptureMode.OneClick))
            {
                form.Config = GetRegionCaptureOptions(options);
                form.Config.UseDimming = false;
                form.Config.ShowMagnifier = false;
                form.Config.ShowTips = false;

                form.Prepare();
                form.ShowDialog();

                if (form.Result == RegionResult.Region)
                {
                    return form.SelectedWindow;
                }
            }

            return null;
        }
Ejemplo n.º 34
0
        public static Image AnnotateImage(Image img, string filePath, RegionCaptureOptions options,
                                          Action <Image, string> saveImageRequested,
                                          Action <Image, string> saveImageAsRequested,
                                          Action <Image> copyImageRequested,
                                          Action <Image> uploadImageRequested,
                                          Action <Image> printImageRequested,
                                          bool taskMode = false)
        {
            RegionCaptureMode mode = taskMode ? RegionCaptureMode.TaskEditor : RegionCaptureMode.Editor;

            using (RegionCaptureForm form = new RegionCaptureForm(mode, options))
            {
                form.ImageFilePath = filePath;
                form.Prepare(img);
                form.ShowDialog();

                switch (form.Result)
                {
                case RegionResult.Close:     // Esc
                case RegionResult.AnnotateCancelTask:
                    return(null);

                case RegionResult.Region:     // Enter
                case RegionResult.AnnotateRunAfterCaptureTasks:
                    return(form.GetResultImage());

                case RegionResult.Fullscreen:     // Space or right click
                case RegionResult.AnnotateContinueTask:
                    return((Image)form.Image.Clone());

                case RegionResult.AnnotateSaveImage:
                    using (Image resultSaveImage = form.GetResultImage())
                    {
                        saveImageRequested(resultSaveImage, form.ImageFilePath);
                    }
                    break;

                case RegionResult.AnnotateSaveImageAs:
                    using (Image resultSaveImageAs = form.GetResultImage())
                    {
                        saveImageAsRequested(resultSaveImageAs, form.ImageFilePath);
                    }
                    break;

                case RegionResult.AnnotateCopyImage:
                    using (Image resultCopyImage = form.GetResultImage())
                    {
                        copyImageRequested(resultCopyImage);
                    }
                    break;

                case RegionResult.AnnotateUploadImage:
                    Image resultUploadImage = form.GetResultImage();
                    uploadImageRequested(resultUploadImage);
                    break;

                case RegionResult.AnnotatePrintImage:
                    using (Image resultPrintImage = form.GetResultImage())
                    {
                        printImageRequested(resultPrintImage);
                    }
                    break;
                }
            }

            return(null);
        }
Ejemplo n.º 35
0
        public static Image ApplyRegionPathToImage(Image backgroundImage, GraphicsPath regionFillPath, RegionCaptureOptions options)
        {
            if (backgroundImage != null && regionFillPath != null)
            {
                Image img;

                Rectangle regionArea      = Rectangle.Round(regionFillPath.GetBounds());
                Rectangle screenRectangle = CaptureHelpers.GetScreenBounds0Based();
                Rectangle newRegionArea   = Rectangle.Intersect(regionArea, screenRectangle);

                using (GraphicsPath gp = (GraphicsPath)regionFillPath.Clone())
                {
                    using (Matrix matrix = new Matrix())
                    {
                        gp.CloseFigure();
                        matrix.Translate(-Math.Max(0, regionArea.X), -Math.Max(0, regionArea.Y));
                        gp.Transform(matrix);
                    }

                    img = ImageHelpers.CropImage(backgroundImage, newRegionArea, gp);
                }

                return(img);
            }

            return(null);
        }
Ejemplo n.º 36
0
 public static bool GetRectangleRegion(out Rectangle rect, RegionCaptureOptions options)
 {
     return(GetRectangleRegion(out rect, out _, options));
 }
Ejemplo n.º 37
0
        public static void AnnotateImage(Image img, string filePath, RegionCaptureOptions options,
            Action<Image> afterCaptureTasksRequested,
            Action<Image, string> saveImageRequested,
            Action<Image, string> saveImageAsRequested,
            Action<Image> copyImageRequested,
            Action<Image> uploadImageRequested,
            Action<Image> printImageRequested)
        {
            using (RegionCaptureForm form = new RegionCaptureForm(RegionCaptureMode.Editor))
            {
                form.ImageFilePath = filePath;

                form.Config = GetRegionCaptureOptions(options);
                form.Config.DetectWindows = false;
                form.Config.ShowTips = false;
                form.Config.UseDimming = false;

                form.Prepare(img);
                form.ShowDialog();

                if (form.Result != RegionResult.Close)
                {
                    Image result = form.GetResultImage();

                    switch (form.Result)
                    {
                        default:
                            result.Dispose();
                            break;
                        case RegionResult.AnnotateRunAfterCaptureTasks:
                            afterCaptureTasksRequested(result);
                            break;
                        case RegionResult.AnnotateSaveImage:
                            saveImageRequested(result, form.ImageFilePath);
                            result.Dispose();
                            break;
                        case RegionResult.AnnotateSaveImageAs:
                            saveImageAsRequested(result, form.ImageFilePath);
                            result.Dispose();
                            break;
                        case RegionResult.AnnotateCopyImage:
                            copyImageRequested(result);
                            result.Dispose();
                            break;
                        case RegionResult.AnnotateUploadImage:
                            uploadImageRequested(result);
                            break;
                        case RegionResult.AnnotatePrintImage:
                            printImageRequested(result);
                            result.Dispose();
                            break;
                    }
                }
            }
        }
Ejemplo n.º 38
0
        public RegionCaptureForm(RegionCaptureMode mode)
        {
            Mode = mode;

            ScreenRectangle = CaptureHelpers.GetScreenBounds();
            ScreenRectangle0Based = CaptureHelpers.ScreenToClient(ScreenRectangle);
            ImageRectangle = ScreenRectangle0Based;

            InitializeComponent();

            Config = new RegionCaptureOptions();
            DrawableObjects = new List<DrawableObject>();
            timerStart = new Stopwatch();
            timerFPS = new Stopwatch();
            colorBlinkAnimation = new ColorBlinkAnimation();

            borderPen = new Pen(Color.Black);
            borderDotPen = new Pen(Color.White) { DashPattern = new float[] { 5, 5 } };
            nodeBackgroundBrush = new SolidBrush(Color.White);
            infoFont = new Font("Verdana", 9);
            infoFontMedium = new Font("Verdana", 12);
            infoFontBig = new Font("Verdana", 16, FontStyle.Bold);
            textBackgroundBrush = new SolidBrush(Color.FromArgb(75, Color.Black));
            textBackgroundPenWhite = new Pen(Color.FromArgb(50, Color.White));
            textBackgroundPenBlack = new Pen(Color.FromArgb(150, Color.Black));
            markerPen = new Pen(Color.FromArgb(200, Color.Red));
        }
Ejemplo n.º 39
0
        public static void AnnotateImage(Image img, string filePath, RegionCaptureOptions options,
                                         Action <Image> afterCaptureTasksRequested,
                                         Action <Image, string> saveImageRequested,
                                         Action <Image, string> saveImageAsRequested,
                                         Action <Image> copyImageRequested,
                                         Action <Image> uploadImageRequested,
                                         Action <Image> printImageRequested)
        {
            using (RegionCaptureForm form = new RegionCaptureForm(RegionCaptureMode.Editor))
            {
                form.ImageFilePath = filePath;

                form.Config = GetRegionCaptureOptions(options);
                form.Config.DetectWindows = false;
                form.Config.ShowTips      = false;
                form.Config.UseDimming    = false;

                form.Prepare(img);
                form.ShowDialog();

                if (form.Result != RegionResult.Close)
                {
                    Image result = form.GetResultImage();

                    switch (form.Result)
                    {
                    default:
                        result.Dispose();
                        break;

                    case RegionResult.AnnotateRunAfterCaptureTasks:
                        afterCaptureTasksRequested(result);
                        break;

                    case RegionResult.AnnotateSaveImage:
                        saveImageRequested(result, form.ImageFilePath);
                        result.Dispose();
                        break;

                    case RegionResult.AnnotateSaveImageAs:
                        saveImageAsRequested(result, form.ImageFilePath);
                        result.Dispose();
                        break;

                    case RegionResult.AnnotateCopyImage:
                        copyImageRequested(result);
                        result.Dispose();
                        break;

                    case RegionResult.AnnotateUploadImage:
                        uploadImageRequested(result);
                        break;

                    case RegionResult.AnnotatePrintImage:
                        printImageRequested(result);
                        result.Dispose();
                        break;
                    }
                }
            }
        }
Ejemplo n.º 40
0
        public static Image AnnotateImage(Image img, string filePath, RegionCaptureOptions options,
                                          Action <Image, string> saveImageRequested,
                                          Action <Image, string> saveImageAsRequested,
                                          Action <Image> copyImageRequested,
                                          Action <Image> uploadImageRequested,
                                          Action <Image> printImageRequested)
        {
            using (RegionCaptureForm form = new RegionCaptureForm(RegionCaptureMode.TaskEditor))
            {
                form.ImageFilePath = filePath;

                form.Config = GetRegionCaptureOptions(options);
                form.Config.DetectWindows = false;
                form.Config.ShowHotkeys   = false;
                form.Config.UseDimming    = false;

                form.Prepare(img);
                form.ShowDialog();

                switch (form.Result)
                {
                case RegionResult.Close:     // Esc
                case RegionResult.AnnotateCancelTask:
                    return(null);

                case RegionResult.Region:     // Enter
                case RegionResult.AnnotateRunAfterCaptureTasks:
                    return(form.GetResultImage());

                case RegionResult.Fullscreen:     // Space
                case RegionResult.AnnotateContinueTask:
                    return((Image)img.Clone());

                case RegionResult.AnnotateSaveImage:
                    using (Image resultSaveImage = form.GetResultImage())
                    {
                        saveImageRequested(resultSaveImage, form.ImageFilePath);
                    }
                    break;

                case RegionResult.AnnotateSaveImageAs:
                    using (Image resultSaveImageAs = form.GetResultImage())
                    {
                        saveImageAsRequested(resultSaveImageAs, form.ImageFilePath);
                    }
                    break;

                case RegionResult.AnnotateCopyImage:
                    using (Image resultCopyImage = form.GetResultImage())
                    {
                        copyImageRequested(resultCopyImage);
                    }
                    break;

                case RegionResult.AnnotateUploadImage:
                    Image resultUploadImage = form.GetResultImage();
                    uploadImageRequested(resultUploadImage);
                    break;

                case RegionResult.AnnotatePrintImage:
                    using (Image resultPrintImage = form.GetResultImage())
                    {
                        printImageRequested(resultPrintImage);
                    }
                    break;
                }
            }

            return(null);
        }