From 316e9a43884a7b14feec77087bc02e5eb46ec8ac Mon Sep 17 00:00:00 2001 From: Jaex Date: Sat, 19 Nov 2016 02:36:14 +0300 Subject: [PATCH] Added capture last region button to region capture menu --- ShareX.ScreenCaptureLib/Enums.cs | 1 + .../Forms/RegionCaptureForm.cs | 33 +++++++++++++----- .../Properties/Resources.Designer.cs | 10 ++++++ .../Properties/Resources.resx | 3 ++ ShareX.ScreenCaptureLib/Resources/layer.png | Bin 0 -> 460 bytes .../Shapes/ShapeManagerMenu.cs | 10 +++++- .../ShareX.ScreenCaptureLib.csproj | 1 + 7 files changed, 48 insertions(+), 10 deletions(-) create mode 100644 ShareX.ScreenCaptureLib/Resources/layer.png diff --git a/ShareX.ScreenCaptureLib/Enums.cs b/ShareX.ScreenCaptureLib/Enums.cs index 006616d59..0dafb1f36 100644 --- a/ShareX.ScreenCaptureLib/Enums.cs +++ b/ShareX.ScreenCaptureLib/Enums.cs @@ -46,6 +46,7 @@ public enum RegionResult { Close, Region, + LastRegion, Fullscreen, Monitor, ActiveMonitor, diff --git a/ShareX.ScreenCaptureLib/Forms/RegionCaptureForm.cs b/ShareX.ScreenCaptureLib/Forms/RegionCaptureForm.cs index b86b507a5..12ab23e8e 100644 --- a/ShareX.ScreenCaptureLib/Forms/RegionCaptureForm.cs +++ b/ShareX.ScreenCaptureLib/Forms/RegionCaptureForm.cs @@ -1072,11 +1072,22 @@ public Image GetResultImage() return img; } - else if (Result == RegionResult.Region) + 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, regionFillPath); + return RegionCaptureTasks.ApplyRegionPathToImage(img, gp); } } else if (Result == RegionResult.Fullscreen) @@ -1148,15 +1159,19 @@ protected override void Dispose(bool disposing) if (regionFillPath != null) { - if (LastRegionFillPath != null) LastRegionFillPath.Dispose(); - LastRegionFillPath = regionFillPath; - } - else - { - if (regionFillPath != null) regionFillPath.Dispose(); - if (regionDrawPath != null) regionDrawPath.Dispose(); + if (Result == RegionResult.Region) + { + if (LastRegionFillPath != null) LastRegionFillPath.Dispose(); + + LastRegionFillPath = regionFillPath; + } + else + { + regionFillPath.Dispose(); + } } + if (regionDrawPath != null) regionDrawPath.Dispose(); if (Image != null) Image.Dispose(); base.Dispose(disposing); diff --git a/ShareX.ScreenCaptureLib/Properties/Resources.Designer.cs b/ShareX.ScreenCaptureLib/Properties/Resources.Designer.cs index 1faadc552..bb680bcd0 100644 --- a/ShareX.ScreenCaptureLib/Properties/Resources.Designer.cs +++ b/ShareX.ScreenCaptureLib/Properties/Resources.Designer.cs @@ -364,6 +364,16 @@ internal class Resources { } } + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap layer { + get { + object obj = ResourceManager.GetObject("layer", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// diff --git a/ShareX.ScreenCaptureLib/Properties/Resources.resx b/ShareX.ScreenCaptureLib/Properties/Resources.resx index c51478395..a4c57dff6 100644 --- a/ShareX.ScreenCaptureLib/Properties/Resources.resx +++ b/ShareX.ScreenCaptureLib/Properties/Resources.resx @@ -480,4 +480,7 @@ Distance: {6:0.00} px / Angle: {7:0.00}° ..\Resources\test_32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\layer.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + \ No newline at end of file diff --git a/ShareX.ScreenCaptureLib/Resources/layer.png b/ShareX.ScreenCaptureLib/Resources/layer.png new file mode 100644 index 0000000000000000000000000000000000000000..0582493b03c4df7322f6e51bfbcb2671460431c4 GIT binary patch literal 460 zcmV;-0W}u$;%oMIbdq^P0BO7;> zj*w3S41gbh{Mm1y9Ax { form.UpdateRegionPath(); @@ -482,6 +482,14 @@ private void CreateToolbar() }; tsddbCapture.DropDownItems.Add(tsmiRegionCapture); + if (RegionCaptureForm.LastRegionFillPath != null) + { + ToolStripMenuItem tsmiLastRegionCapture = new ToolStripMenuItem("Capture last region"); + tsmiLastRegionCapture.Image = Resources.layers; + tsmiLastRegionCapture.MouseDown += (sender, e) => form.Close(RegionResult.LastRegion); + tsddbCapture.DropDownItems.Add(tsmiLastRegionCapture); + } + ToolStripMenuItem tsmiFullscreenCapture = new ToolStripMenuItem(Resources.ShapeManager_CreateContextMenu_Capture_fullscreen); tsmiFullscreenCapture.Image = Resources.layer_fullscreen; tsmiFullscreenCapture.MouseDown += (sender, e) => form.Close(RegionResult.Fullscreen); diff --git a/ShareX.ScreenCaptureLib/ShareX.ScreenCaptureLib.csproj b/ShareX.ScreenCaptureLib/ShareX.ScreenCaptureLib.csproj index 7db03a0c2..801bfda19 100644 --- a/ShareX.ScreenCaptureLib/ShareX.ScreenCaptureLib.csproj +++ b/ShareX.ScreenCaptureLib/ShareX.ScreenCaptureLib.csproj @@ -165,6 +165,7 @@ +