diff --git a/ShareX.HelpersLib/Helpers/ImageHelpers.cs b/ShareX.HelpersLib/Helpers/ImageHelpers.cs index 77d3544c2..bc9df22e8 100644 --- a/ShareX.HelpersLib/Helpers/ImageHelpers.cs +++ b/ShareX.HelpersLib/Helpers/ImageHelpers.cs @@ -243,30 +243,6 @@ public static Bitmap CropBitmap(Bitmap bmp, Rectangle rect) return null; } - public static Image CropImage(Image img, Rectangle rect, GraphicsPath gp) - { - if (img != null && rect.Width > 0 && rect.Height > 0 && gp != null) - { - Bitmap bmp = new Bitmap(rect.Width, rect.Height); - bmp.SetResolution(img.HorizontalResolution, img.VerticalResolution); - - using (Graphics g = Graphics.FromImage(bmp)) - { - g.SetHighQuality(); - - using (Region region = new Region(gp)) - { - g.Clip = region; - g.DrawImage(img, new Rectangle(0, 0, rect.Width, rect.Height), rect, GraphicsUnit.Pixel); - } - } - - return bmp; - } - - return null; - } - public static Image DrawOutline(Image img, GraphicsPath gp) { if (img != null && gp != null) diff --git a/ShareX.ScreenCaptureLib/Forms/BaseRegionForm.cs b/ShareX.ScreenCaptureLib/Forms/BaseRegionForm.cs index 366bc04f9..47f43e383 100644 --- a/ShareX.ScreenCaptureLib/Forms/BaseRegionForm.cs +++ b/ShareX.ScreenCaptureLib/Forms/BaseRegionForm.cs @@ -232,7 +232,7 @@ public virtual Image GetResultImage() { using (Image img = GetOutputImage()) { - return RegionCaptureHelpers.ApplyRegionPathToImage(img, regionFillPath, Config); + return RegionCaptureHelpers.ApplyRegionPathToImage(img, regionFillPath); } } else if (Result == RegionResult.Fullscreen) diff --git a/ShareX.ScreenCaptureLib/RegionHelpers/RegionCaptureHelpers.cs b/ShareX.ScreenCaptureLib/RegionHelpers/RegionCaptureHelpers.cs index 59ffb4f05..1c1c3054d 100644 --- a/ShareX.ScreenCaptureLib/RegionHelpers/RegionCaptureHelpers.cs +++ b/ShareX.ScreenCaptureLib/RegionHelpers/RegionCaptureHelpers.cs @@ -24,7 +24,6 @@ You should have received a copy of the GNU General Public License #endregion License Information (GPL v3) using ShareX.HelpersLib; -using System; using System.Drawing; using System.Drawing.Drawing2D; using System.Windows.Forms; @@ -145,29 +144,28 @@ public static void ShowScreenRuler() } } - public static Image ApplyRegionPathToImage(Image backgroundImage, GraphicsPath regionFillPath, RegionCaptureOptions options) + public static Image ApplyRegionPathToImage(Image img, GraphicsPath gp) { - if (backgroundImage != null && regionFillPath != null) + if (img != null && gp != null) { - Image img; - - Rectangle regionArea = Rectangle.Round(regionFillPath.GetBounds()); + Rectangle regionArea = Rectangle.Round(gp.GetBounds()); Rectangle screenRectangle = CaptureHelpers.GetScreenBounds0Based(); - Rectangle newRegionArea = Rectangle.Intersect(regionArea, screenRectangle); + regionArea = Rectangle.Intersect(regionArea, screenRectangle); - using (GraphicsPath gp = (GraphicsPath)regionFillPath.Clone()) + if (regionArea.IsValid()) { - using (Matrix matrix = new Matrix()) + using (Bitmap bmp = img.CreateEmptyBitmap()) + using (Graphics g = Graphics.FromImage(bmp)) + using (TextureBrush brush = new TextureBrush(img)) { - gp.CloseFigure(); - matrix.Translate(-Math.Max(0, regionArea.X), -Math.Max(0, regionArea.Y)); - gp.Transform(matrix); + g.PixelOffsetMode = PixelOffsetMode.Half; + g.SmoothingMode = SmoothingMode.HighQuality; + + g.FillPath(brush, gp); + + return ImageHelpers.CropBitmap(bmp, regionArea); } - - img = ImageHelpers.CropImage(backgroundImage, newRegionArea, gp); } - - return img; } return null; diff --git a/ShareX.ScreenCaptureLib/Shapes/ShapeManager.cs b/ShareX.ScreenCaptureLib/Shapes/ShapeManager.cs index c5eeb8797..ed5721ee8 100644 --- a/ShareX.ScreenCaptureLib/Shapes/ShapeManager.cs +++ b/ShareX.ScreenCaptureLib/Shapes/ShapeManager.cs @@ -1479,25 +1479,6 @@ public bool IsShapeIntersect() return GetShapeIntersect() != null; } - public Rectangle CombineAreas() - { - BaseShape[] areas = ValidRegions; - - if (areas.Length > 0) - { - Rectangle rect = areas[0].Rectangle; - - for (int i = 1; i < areas.Length; i++) - { - rect = Rectangle.Union(rect, areas[i].Rectangle); - } - - return rect; - } - - return Rectangle.Empty; - } - private void UpdateCursor() { try diff --git a/ShareX/Forms/MainForm.cs b/ShareX/Forms/MainForm.cs index 395d5e715..9bd24b11e 100644 --- a/ShareX/Forms/MainForm.cs +++ b/ShareX/Forms/MainForm.cs @@ -2282,7 +2282,7 @@ private void CaptureLastRegion(TaskSettings taskSettings, bool autoHideForm = tr { using (Image screenshot = TaskHelpers.GetScreenshot(taskSettings).CaptureFullscreen()) { - return RegionCaptureHelpers.ApplyRegionPathToImage(screenshot, BaseRegionForm.LastRegionFillPath, taskSettings.CaptureSettings.SurfaceOptions); + return RegionCaptureHelpers.ApplyRegionPathToImage(screenshot, BaseRegionForm.LastRegionFillPath); } }, CaptureType.LastRegion, taskSettings, autoHideForm); }