diff --git a/ShareX.HelpersLib/Properties/Resources.Designer.cs b/ShareX.HelpersLib/Properties/Resources.Designer.cs index 175e5e8e1..f820c8467 100644 --- a/ShareX.HelpersLib/Properties/Resources.Designer.cs +++ b/ShareX.HelpersLib/Properties/Resources.Designer.cs @@ -1320,6 +1320,24 @@ internal class Resources { } } + /// + /// Looks up a localized string similar to Capture region (Simple annotate). + /// + internal static string HotkeyType_RectangleAnnotate { + get { + return ResourceManager.GetString("HotkeyType_RectangleAnnotate", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Screen capture. + /// + internal static string HotkeyType_RectangleAnnotate_Category { + get { + return ResourceManager.GetString("HotkeyType_RectangleAnnotate_Category", resourceCulture); + } + } + /// /// Looks up a localized string similar to Capture region (Light). /// diff --git a/ShareX.HelpersLib/Properties/Resources.resx b/ShareX.HelpersLib/Properties/Resources.resx index dfedda435..5a27df187 100644 --- a/ShareX.HelpersLib/Properties/Resources.resx +++ b/ShareX.HelpersLib/Properties/Resources.resx @@ -902,4 +902,10 @@ Would you like to download it? Screen capture + + Capture region (Simple annotate) + + + Screen capture + \ No newline at end of file diff --git a/ShareX.HelpersLib/Properties/Resources.tr.resx b/ShareX.HelpersLib/Properties/Resources.tr.resx index b35361cc3..0ca4cb908 100644 --- a/ShareX.HelpersLib/Properties/Resources.tr.resx +++ b/ShareX.HelpersLib/Properties/Resources.tr.resx @@ -880,4 +880,10 @@ Dosya boyutu: {2:n0} / {3:n0} KB Yazı tanı (OCR) + + Ekran yakalama + + + Bölge yakalama (Basit dipnot) + \ No newline at end of file diff --git a/ShareX/Enums.cs b/ShareX/Enums.cs index 8752fda96..a06d46f63 100644 --- a/ShareX/Enums.cs +++ b/ShareX/Enums.cs @@ -163,6 +163,7 @@ public enum HotkeyType // Localized + Category RectangleRegion, RectangleLight, RectangleTransparent, + RectangleAnnotate, PolygonRegion, FreeHandRegion, CustomRegion, diff --git a/ShareX/Forms/MainForm.cs b/ShareX/Forms/MainForm.cs index 296167e5d..ef0ed2f30 100644 --- a/ShareX/Forms/MainForm.cs +++ b/ShareX/Forms/MainForm.cs @@ -1746,7 +1746,7 @@ private void tsmiImagePreviewAutomatic_Click(object sender, EventArgs e) private delegate Image ScreenCaptureDelegate(); - private enum LastRegionCaptureType { Default, Light, Transparent } + private enum LastRegionCaptureType { Default, Light, Transparent, Annotate } private LastRegionCaptureType lastRegionCaptureType = LastRegionCaptureType.Default; @@ -1853,6 +1853,9 @@ private void ExecuteJob(TaskSettings taskSettings, HotkeyType job) case HotkeyType.RectangleTransparent: CaptureRectangleTransparent(safeTaskSettings, false); break; + case HotkeyType.RectangleAnnotate: + CaptureRectangleAnnotate(safeTaskSettings, false); + break; case HotkeyType.PolygonRegion: CaptureScreenshot(CaptureType.Polygon, safeTaskSettings, false); break; @@ -2261,6 +2264,31 @@ private void CaptureRectangleTransparent(TaskSettings taskSettings = null, bool }, CaptureType.Rectangle, taskSettings, autoHideForm); } + private void CaptureRectangleAnnotate(TaskSettings taskSettings = null, bool autoHideForm = true) + { + if (taskSettings == null) taskSettings = TaskSettings.GetDefaultTaskSettings(); + + DoCapture(() => + { + Image img = null; + + using (RectangleRegionAnnotateForm rectangleAnnotate = new RectangleRegionAnnotateForm(taskSettings.CaptureSettingsReference.RectangleAnnotateOptions)) + { + if (rectangleAnnotate.ShowDialog() == DialogResult.OK) + { + img = rectangleAnnotate.GetAreaImage(); + + if (img != null) + { + lastRegionCaptureType = LastRegionCaptureType.Annotate; + } + } + } + + return img; + }, CaptureType.Rectangle, taskSettings, autoHideForm); + } + private void CaptureLastRegion(TaskSettings taskSettings, bool autoHideForm = true) { switch (lastRegionCaptureType) @@ -2313,6 +2341,22 @@ private void CaptureLastRegion(TaskSettings taskSettings, bool autoHideForm = tr CaptureRectangleTransparent(taskSettings, autoHideForm); } break; + case LastRegionCaptureType.Annotate: + if (!RectangleRegionAnnotateForm.LastSelectionRectangle0Based.IsEmpty) + { + DoCapture(() => + { + using (Image screenshot = Screenshot.CaptureFullscreen()) + { + return ImageHelpers.CropImage(screenshot, RectangleRegionAnnotateForm.LastSelectionRectangle0Based); + } + }, CaptureType.LastRegion, taskSettings, autoHideForm); + } + else + { + CaptureRectangleAnnotate(taskSettings, autoHideForm); + } + break; } } diff --git a/ShareX/TaskSettings.cs b/ShareX/TaskSettings.cs index 69bd21339..07c88f5fd 100644 --- a/ShareX/TaskSettings.cs +++ b/ShareX/TaskSettings.cs @@ -343,6 +343,12 @@ public class TaskSettingsCapture public ScrollingCaptureOptions ScrollingCaptureOptions = new ScrollingCaptureOptions(); #endregion Capture / Scrolling capture + + #region Capture / Rectangle annotate + + public RectangleAnnotateOptions RectangleAnnotateOptions = new RectangleAnnotateOptions(); + + #endregion Capture / Rectangle annotate } public class TaskSettingsUpload