public static bool GetRectangleRegion(out Rectangle rect, out WindowInfo windowInfo, RegionCaptureOptions options) { RegionCaptureOptions newOptions = GetRegionCaptureOptions(options); using (RegionCaptureForm form = new RegionCaptureForm(RegionCaptureMode.Default, newOptions)) { form.ShowDialog(); windowInfo = form.GetWindowInfo(); 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); }
public static void CaptureRegion(TaskSettings taskSettings, bool autoHideForm = true) { RegionCaptureForm form = new RegionCaptureForm(RegionCaptureMode.Annotation); DoCapture(() => { Image img = null; try { form.Config = taskSettings.CaptureSettingsReference.SurfaceOptions; form.Prepare(TaskHelpers.GetScreenshot(taskSettings).CaptureFullscreen()); form.ShowDialog(); img = form.GetResultImage(); if (img != null) { if (form.Result == RegionResult.Region && taskSettings.UploadSettings.RegionCaptureUseWindowPattern) { WindowInfo windowInfo = form.GetWindowInfo(); if (windowInfo != null) { img.Tag = new ImageTag { WindowTitle = windowInfo.Text, ProcessName = windowInfo.ProcessName }; } } lastRegionCaptureType = LastRegionCaptureType.Default; } } finally { if (form != null) { form.Dispose(); } } return img; }, CaptureType.Region, taskSettings, autoHideForm); }