Rectangle (Light) added to Capture menu

This commit is contained in:
Jaex 2014-05-31 18:25:44 +03:00
parent 2ed433ffef
commit 728e3fddde
5 changed files with 94 additions and 46 deletions

View file

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

View file

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

View file

@ -112,27 +112,27 @@
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<metadata name="tsMain.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<metadata name="tsMain.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
<metadata name="cmsUploadInfo.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<metadata name="cmsUploadInfo.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>286, 17</value>
</metadata>
<metadata name="niTray.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<metadata name="niTray.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>105, 17</value>
</metadata>
<metadata name="cmsTray.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<metadata name="cmsTray.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>190, 17</value>
</metadata>
<metadata name="$this.TrayHeight" type="System.Int32, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<metadata name="$this.TrayHeight" type="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>49</value>
</metadata>
<assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
AAABAAcADQ0AAAAAAA0cnQAAdgAAAICAAAAAACAAKAgBAJKdAABAQAAAAAAgAChCAAC6pQEAMDAAAAAA

View file

@ -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)

View file

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