public Image GetResultImage() { if (Mode == RegionCaptureMode.Editor) { foreach (BaseShape shape in ShapeManager.Shapes) { shape.Move(-ImageRectangle.X, -ImageRectangle.Y); } Image img = GetOutputImage(); foreach (BaseShape shape in ShapeManager.Shapes) { shape.Move(ImageRectangle.X, ImageRectangle.Y); } return(img); } else if (Result == RegionResult.Region || Result == RegionResult.LastRegion) { GraphicsPath gp; if (Result == RegionResult.LastRegion) { gp = LastRegionFillPath; } else { gp = regionFillPath; } using (Image img = GetOutputImage()) { return(RegionCaptureTasks.ApplyRegionPathToImage(img, gp)); } } else if (Result == RegionResult.Fullscreen) { return(GetOutputImage()); } else if (Result == RegionResult.Monitor) { Screen[] screens = Screen.AllScreens; if (MonitorIndex < screens.Length) { Screen screen = screens[MonitorIndex]; Rectangle screenRect = CaptureHelpers.ScreenToClient(screen.Bounds); using (Image img = GetOutputImage()) { return(ImageHelpers.CropImage(img, screenRect)); } } } else if (Result == RegionResult.ActiveMonitor) { Rectangle activeScreenRect = CaptureHelpers.GetActiveScreenBounds0Based(); using (Image img = GetOutputImage()) { return(ImageHelpers.CropImage(img, activeScreenRect)); } } return(null); }
private Image CombineImages() { if (images == null || images.Count == 0) { return(null); } if (images.Count == 1) { return((Image)images[0].Clone()); } List <Image> output = new List <Image>(); for (int i = 0; i < images.Count - Options.IgnoreLast; i++) { Image newImage; Image image = images[i]; if (Options.TrimLeftEdge > 0 || Options.TrimTopEdge > 0 || Options.TrimRightEdge > 0 || Options.TrimBottomEdge > 0 || Options.CombineAdjustmentVertical > 0 || Options.CombineAdjustmentLastVertical > 0) { Rectangle rect = new Rectangle(Options.TrimLeftEdge, Options.TrimTopEdge, image.Width - Options.TrimLeftEdge - Options.TrimRightEdge, image.Height - Options.TrimTopEdge - Options.TrimBottomEdge); if (i == images.Count - 1) { rect.Y += Options.CombineAdjustmentLastVertical; rect.Height -= Options.CombineAdjustmentLastVertical; } else if (i > 0) { rect.Y += Options.CombineAdjustmentVertical; rect.Height -= Options.CombineAdjustmentVertical; } newImage = ImageHelpers.CropImage(image, rect); if (newImage == null) { continue; } } else { newImage = (Image)image.Clone(); } output.Add(newImage); } Image result = ImageHelpers.CombineImages(output); foreach (Image image in output) { if (image != null) { image.Dispose(); } } output.Clear(); return(result); }