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; }