From 728e3fddde0bcada28da0ca795336d3ce72f1589 Mon Sep 17 00:00:00 2001 From: Jaex Date: Sat, 31 May 2014 18:25:44 +0300 Subject: [PATCH] Rectangle (Light) added to Capture menu --- ScreenCaptureLib/Forms/RectangleLight.cs | 3 +- ShareX/Forms/MainForm.Designer.cs | 38 ++++++++--- ShareX/Forms/MainForm.resx | 16 ++--- ShareX/Forms/MainForm_Capture.cs | 80 ++++++++++++++++-------- ShareX/TaskSettings.cs | 3 - 5 files changed, 94 insertions(+), 46 deletions(-) diff --git a/ScreenCaptureLib/Forms/RectangleLight.cs b/ScreenCaptureLib/Forms/RectangleLight.cs index d54ac4ad0..4213bc5f6 100644 --- a/ScreenCaptureLib/Forms/RectangleLight.cs +++ b/ScreenCaptureLib/Forms/RectangleLight.cs @@ -55,8 +55,7 @@ public Rectangle SelectionRectangle0Based { get { - return new Rectangle(SelectionRectangle.X - ScreenRectangle.X, SelectionRectangle.Y - ScreenRectangle.Y, - SelectionRectangle.Width, SelectionRectangle.Height); + return new Rectangle(SelectionRectangle.X - ScreenRectangle.X, SelectionRectangle.Y - ScreenRectangle.Y, SelectionRectangle.Width, SelectionRectangle.Height); } } diff --git a/ShareX/Forms/MainForm.Designer.cs b/ShareX/Forms/MainForm.Designer.cs index 5301c9e85..e3a9dcdfd 100644 --- a/ShareX/Forms/MainForm.Designer.cs +++ b/ShareX/Forms/MainForm.Designer.cs @@ -41,6 +41,7 @@ private void InitializeComponent() this.tsmiMonitor = new System.Windows.Forms.ToolStripMenuItem(); this.tsmiRectangle = new System.Windows.Forms.ToolStripMenuItem(); this.tsmiWindowRectangle = new System.Windows.Forms.ToolStripMenuItem(); + this.tsmiRectangleLight = new System.Windows.Forms.ToolStripMenuItem(); this.tsmiRoundedRectangle = new System.Windows.Forms.ToolStripMenuItem(); this.tsmiEllipse = new System.Windows.Forms.ToolStripMenuItem(); this.tsmiTriangle = new System.Windows.Forms.ToolStripMenuItem(); @@ -194,6 +195,7 @@ private void InitializeComponent() this.tsmiTrayImageEffects = new System.Windows.Forms.ToolStripMenuItem(); this.tsmiTrayMonitorTest = new System.Windows.Forms.ToolStripMenuItem(); this.tsmiTrayDNSChanger = new System.Windows.Forms.ToolStripMenuItem(); + this.tsmiTrayQRCode = new System.Windows.Forms.ToolStripMenuItem(); this.tsmiScreenshotsFolder = new System.Windows.Forms.ToolStripMenuItem(); this.tsmiTrayHistory = new System.Windows.Forms.ToolStripMenuItem(); this.tsmiTrayImageHistory = new System.Windows.Forms.ToolStripMenuItem(); @@ -203,8 +205,9 @@ private void InitializeComponent() this.tsmiTrayShow = new System.Windows.Forms.ToolStripMenuItem(); this.tsmiTrayExit = new System.Windows.Forms.ToolStripMenuItem(); this.ssToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.tsmiTrayQRCode = new System.Windows.Forms.ToolStripMenuItem(); + this.tsmiTrayRectangleLight = new System.Windows.Forms.ToolStripMenuItem(); this.tsMain.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.scMain)).BeginInit(); this.scMain.Panel1.SuspendLayout(); this.scMain.Panel2.SuspendLayout(); this.scMain.SuspendLayout(); @@ -295,6 +298,7 @@ private void InitializeComponent() this.tsmiMonitor, this.tsmiRectangle, this.tsmiWindowRectangle, + this.tsmiRectangleLight, this.tsmiRoundedRectangle, this.tsmiEllipse, this.tsmiTriangle, @@ -350,6 +354,14 @@ private void InitializeComponent() this.tsmiWindowRectangle.Text = "Rectangle / Window"; this.tsmiWindowRectangle.Click += new System.EventHandler(this.tsmiWindowRectangle_Click); // + // tsmiRectangleLight + // + this.tsmiRectangleLight.Image = global::ShareX.Properties.Resources.Rectangle; + this.tsmiRectangleLight.Name = "tsmiRectangleLight"; + this.tsmiRectangleLight.Size = new System.Drawing.Size(181, 22); + this.tsmiRectangleLight.Text = "Rectangle (Light)"; + this.tsmiRectangleLight.Click += new System.EventHandler(this.tsmiRectangleLight_Click); + // // tsmiRoundedRectangle // this.tsmiRoundedRectangle.Image = global::ShareX.Properties.Resources.layer_shape_round; @@ -1337,6 +1349,7 @@ private void InitializeComponent() this.tsmiTrayMonitor, this.tsmiTrayRectangle, this.tsmiTrayWindowRectangle, + this.tsmiTrayRectangleLight, this.tsmiTrayRoundedRectangle, this.tsmiTrayEllipse, this.tsmiTrayTriangle, @@ -1657,6 +1670,14 @@ private void InitializeComponent() this.tsmiTrayDNSChanger.Text = "DNS changer..."; this.tsmiTrayDNSChanger.Click += new System.EventHandler(this.tsmiDNSChanger_Click); // + // tsmiTrayQRCode + // + this.tsmiTrayQRCode.Image = global::ShareX.Properties.Resources.barcode_2d; + this.tsmiTrayQRCode.Name = "tsmiTrayQRCode"; + this.tsmiTrayQRCode.Size = new System.Drawing.Size(183, 22); + this.tsmiTrayQRCode.Text = "QR code..."; + this.tsmiTrayQRCode.Click += new System.EventHandler(this.tsmiQRCode_Click); + // // tsmiScreenshotsFolder // this.tsmiScreenshotsFolder.Image = global::ShareX.Properties.Resources.folder_open_image; @@ -1724,13 +1745,13 @@ private void InitializeComponent() this.ssToolStripMenuItem.Size = new System.Drawing.Size(152, 22); this.ssToolStripMenuItem.Text = "ss"; // - // tsmiTrayQRCode + // tsmiTrayRectangleLight // - this.tsmiTrayQRCode.Image = global::ShareX.Properties.Resources.barcode_2d; - this.tsmiTrayQRCode.Name = "tsmiTrayQRCode"; - this.tsmiTrayQRCode.Size = new System.Drawing.Size(183, 22); - this.tsmiTrayQRCode.Text = "QR code..."; - this.tsmiTrayQRCode.Click += new System.EventHandler(this.tsmiQRCode_Click); + this.tsmiTrayRectangleLight.Image = global::ShareX.Properties.Resources.Rectangle; + this.tsmiTrayRectangleLight.Name = "tsmiTrayRectangleLight"; + this.tsmiTrayRectangleLight.Size = new System.Drawing.Size(184, 22); + this.tsmiTrayRectangleLight.Text = "Rectangle (Light)"; + this.tsmiTrayRectangleLight.Click += new System.EventHandler(this.tsmiTrayRectangleLight_Click); // // MainForm // @@ -1755,6 +1776,7 @@ private void InitializeComponent() this.tsMain.PerformLayout(); this.scMain.Panel1.ResumeLayout(false); this.scMain.Panel2.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.scMain)).EndInit(); this.scMain.ResumeLayout(false); this.cmsUploadInfo.ResumeLayout(false); this.cmsTray.ResumeLayout(false); @@ -1938,5 +1960,7 @@ private void InitializeComponent() private System.Windows.Forms.ToolStripMenuItem tsmiShowQRCode; private System.Windows.Forms.ToolStripMenuItem tsmiQRCode; private System.Windows.Forms.ToolStripMenuItem tsmiTrayQRCode; + private System.Windows.Forms.ToolStripMenuItem tsmiRectangleLight; + private System.Windows.Forms.ToolStripMenuItem tsmiTrayRectangleLight; } } \ No newline at end of file diff --git a/ShareX/Forms/MainForm.resx b/ShareX/Forms/MainForm.resx index 8c6ed0f14..351a34e1a 100644 --- a/ShareX/Forms/MainForm.resx +++ b/ShareX/Forms/MainForm.resx @@ -112,27 +112,27 @@ 2.0 - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - + 17, 17 - + 286, 17 - + 105, 17 - + 190, 17 - + 49 - + AAABAAcADQ0AAAAAAA0cnQAAdgAAAICAAAAAACAAKAgBAJKdAABAQAAAAAAgAChCAAC6pQEAMDAAAAAA diff --git a/ShareX/Forms/MainForm_Capture.cs b/ShareX/Forms/MainForm_Capture.cs index 9337fdc92..36296352a 100644 --- a/ShareX/Forms/MainForm_Capture.cs +++ b/ShareX/Forms/MainForm_Capture.cs @@ -39,6 +39,8 @@ public partial class MainForm { private delegate Image ScreenCaptureDelegate(); + private bool isLightCapture; + private void InitHotkeys() { TaskEx.Run(() => @@ -173,8 +175,8 @@ public void CaptureScreenshot(CaptureType captureType, TaskSettings taskSettings case CaptureType.ActiveMonitor: DoCapture(Screenshot.CaptureActiveMonitor, CaptureType.ActiveMonitor, taskSettings, autoHideForm); break; - case CaptureType.RectangleWindow: case CaptureType.Rectangle: + case CaptureType.RectangleWindow: case CaptureType.RoundedRectangle: case CaptureType.Ellipse: case CaptureType.Triangle: @@ -359,12 +361,6 @@ private void CaptureRegion(CaptureType captureType, TaskSettings taskSettings, b { default: case CaptureType.Rectangle: - if (taskSettings.AdvancedSettings.UseLightRectangleCrop) - { - CaptureLightRectangle(taskSettings, autoHideForm); - return; - } - surface = new RectangleRegion(); break; case CaptureType.RectangleWindow: @@ -413,6 +409,11 @@ private void CaptureRegion(CaptureType captureType, TaskSettings taskSettings, b { img = screenshot; } + + if (img != null) + { + isLightCapture = false; + } } finally { @@ -423,8 +424,10 @@ private void CaptureRegion(CaptureType captureType, TaskSettings taskSettings, b }, captureType, taskSettings, autoHideForm); } - private void CaptureLightRectangle(TaskSettings taskSettings, bool autoHideForm = true) + private void CaptureLightRectangle(TaskSettings taskSettings = null, bool autoHideForm = true) { + if (taskSettings == null) taskSettings = TaskSettings.GetDefaultTaskSettings(); + DoCapture(() => { Image img = null; @@ -434,6 +437,11 @@ private void CaptureLightRectangle(TaskSettings taskSettings, bool autoHideForm if (rectangleLight.ShowDialog() == DialogResult.OK) { img = rectangleLight.GetAreaImage(); + + if (img != null) + { + isLightCapture = true; + } } } @@ -443,29 +451,39 @@ private void CaptureLightRectangle(TaskSettings taskSettings, bool autoHideForm private void CaptureLastRegion(TaskSettings taskSettings, bool autoHideForm = true) { - if (!taskSettings.AdvancedSettings.UseLightRectangleCrop && Surface.LastRegionFillPath != null) + if (!isLightCapture) { - DoCapture(() => + if (Surface.LastRegionFillPath != null) { - using (Image screenshot = Screenshot.CaptureFullscreen()) + DoCapture(() => { - return ShapeCaptureHelpers.GetRegionImage(screenshot, Surface.LastRegionFillPath, Surface.LastRegionDrawPath, taskSettings.CaptureSettings.SurfaceOptions); - } - }, CaptureType.LastRegion, taskSettings, autoHideForm); - } - else if (taskSettings.AdvancedSettings.UseLightRectangleCrop && !RectangleLight.LastSelectionRectangle0Based.IsEmpty) - { - DoCapture(() => + using (Image screenshot = Screenshot.CaptureFullscreen()) + { + return ShapeCaptureHelpers.GetRegionImage(screenshot, Surface.LastRegionFillPath, Surface.LastRegionDrawPath, taskSettings.CaptureSettings.SurfaceOptions); + } + }, CaptureType.LastRegion, taskSettings, autoHideForm); + } + else { - using (Image screenshot = Screenshot.CaptureFullscreen()) - { - return ImageHelpers.CropImage(screenshot, RectangleLight.LastSelectionRectangle0Based); - } - }, CaptureType.LastRegion, taskSettings, autoHideForm); + CaptureRegion(CaptureType.Rectangle, taskSettings, autoHideForm); + } } else { - CaptureRegion(CaptureType.Rectangle, taskSettings, autoHideForm); + if (!RectangleLight.LastSelectionRectangle0Based.IsEmpty) + { + DoCapture(() => + { + using (Image screenshot = Screenshot.CaptureFullscreen()) + { + return ImageHelpers.CropImage(screenshot, RectangleLight.LastSelectionRectangle0Based); + } + }, CaptureType.LastRegion, taskSettings, autoHideForm); + } + else + { + CaptureLightRectangle(taskSettings, autoHideForm); + } } } @@ -573,6 +591,11 @@ private void tsmiRoundedRectangle_Click(object sender, EventArgs e) CaptureScreenshot(CaptureType.RoundedRectangle); } + private void tsmiRectangleLight_Click(object sender, EventArgs e) + { + CaptureLightRectangle(); + } + private void tsmiEllipse_Click(object sender, EventArgs e) { CaptureScreenshot(CaptureType.Ellipse); @@ -637,14 +660,19 @@ private void tsmiTrayMonitorItems_Click(object sender, EventArgs e) } } + private void tsmiTrayRectangle_Click(object sender, EventArgs e) + { + CaptureScreenshot(CaptureType.Rectangle, null, false); + } + private void tsmiTrayWindowRectangle_Click(object sender, EventArgs e) { CaptureScreenshot(CaptureType.RectangleWindow, null, false); } - private void tsmiTrayRectangle_Click(object sender, EventArgs e) + private void tsmiTrayRectangleLight_Click(object sender, EventArgs e) { - CaptureScreenshot(CaptureType.Rectangle, null, false); + CaptureLightRectangle(null, false); } private void tsmiTrayRoundedRectangle_Click(object sender, EventArgs e) diff --git a/ShareX/TaskSettings.cs b/ShareX/TaskSettings.cs index 4e9e00aab..272c53afa 100644 --- a/ShareX/TaskSettings.cs +++ b/ShareX/TaskSettings.cs @@ -395,9 +395,6 @@ public Size ToastWindowSize [Category("After upload"), DefaultValue(false), Description("After upload form will be automatically closed after 60 seconds.")] public bool AutoCloseAfterUploadForm { get; set; } - [Category("Capture"), DefaultValue(false), Description("Light version of rectangle region for better performance.")] - public bool UseLightRectangleCrop { get; set; } - [Category("Interaction"), DefaultValue(false), Description("Disable notifications")] public bool DisableNotifications { get; set; }