fixed #68: Added transparent (not freezing screen) rectangle capture support

This commit is contained in:
Jaex 2015-04-01 14:12:21 +03:00
parent 20aa65ca0d
commit 8f4fa2fd12
21 changed files with 399 additions and 85 deletions

View file

@ -60,7 +60,7 @@ public static string GetMimeType(string ext)
{ "3ds", "image/x-3ds" },
{ "3g2", "video/3gpp2" },
{ "3gp", "video/3gpp" },
//{ "7z", "application/x-7z-compressed" },
{ "7z", "application/x-7z-compressed" },
{ "aab", "application/x-authorware-bin" },
{ "aac", "audio/x-aac" },
{ "aam", "application/x-authorware-map" },

View file

@ -39,15 +39,8 @@ public LayeredForm()
#region Windows Form Designer generated code
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
@ -57,17 +50,13 @@ protected override void Dispose(bool disposing)
base.Dispose(disposing);
}
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.SuspendLayout();
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(292, 273);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
this.AutoScaleDimensions = new SizeF(6F, 13F);
this.AutoScaleMode = AutoScaleMode.Font;
this.ClientSize = new Size(292, 273);
this.FormBorderStyle = FormBorderStyle.None;
this.Name = "LayeredForm";
this.ShowInTaskbar = false;
this.Text = "LayeredForm";

View file

@ -132,9 +132,6 @@
<data name="btnDuplicate.Text" xml:space="preserve">
<value>Duplizieren</value>
</data>
<data name="btnLoadImage.Text" xml:space="preserve">
<value>Bild laden...</value>
</data>
<data name="btnOK.Text" xml:space="preserve">
<value>OK</value>
</data>

View file

@ -1,3 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
@ -128,9 +129,6 @@
<data name="btnDuplicate.Text" xml:space="preserve">
<value>Dupliquer</value>
</data>
<data name="btnLoadImage.Text" xml:space="preserve">
<value>Charger l'image...</value>
</data>
<data name="btnOK.Text" xml:space="preserve">
<value>OK</value>
</data>

View file

@ -132,9 +132,6 @@
<data name="btnDuplicate.Text" xml:space="preserve">
<value>Duplikálás</value>
</data>
<data name="btnLoadImage.Text" xml:space="preserve">
<value>Kép betöltése...</value>
</data>
<data name="btnOK.Text" xml:space="preserve">
<value>OK</value>
</data>

View file

@ -1,3 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
@ -131,9 +132,6 @@
<data name="btnDuplicate.Text" xml:space="preserve">
<value>Çoğalt</value>
</data>
<data name="btnLoadImage.Text" xml:space="preserve">
<value>Resim yükle...</value>
</data>
<data name="btnOK.Text" xml:space="preserve">
<value>Tamam</value>
</data>

View file

@ -1,3 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
@ -131,9 +132,6 @@
<data name="btnDuplicate.Text" xml:space="preserve">
<value>复制</value>
</data>
<data name="btnLoadImage.Text" xml:space="preserve">
<value>加载图像...</value>
</data>
<data name="btnOK.Text" xml:space="preserve">
<value>确定</value>
</data>

View file

@ -0,0 +1,208 @@
#region License Information (GPL v3)
/*
ShareX - A program that allows you to take screenshots and share any file type
Copyright © 2007-2015 ShareX Developers
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
Optionally you can also view the license at <http://www.gnu.org/licenses/>.
*/
#endregion License Information (GPL v3)
using ShareX.HelpersLib;
using ShareX.ScreenCaptureLib.Properties;
using System;
using System.Diagnostics;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.IO;
using System.Windows.Forms;
namespace ShareX.ScreenCaptureLib
{
public class RectangleTransparent : LayeredForm
{
public static Rectangle LastSelectionRectangle0Based { get; private set; }
public Rectangle ScreenRectangle { get; private set; }
public Rectangle ScreenRectangle0Based
{
get
{
return new Rectangle(0, 0, ScreenRectangle.Width, ScreenRectangle.Height);
}
}
public Rectangle SelectionRectangle { get; private set; }
public Rectangle SelectionRectangle0Based
{
get
{
return new Rectangle(SelectionRectangle.X - ScreenRectangle.X, SelectionRectangle.Y - ScreenRectangle.Y, SelectionRectangle.Width, SelectionRectangle.Height);
}
}
public Point CurrentMousePosition { get; private set; }
public Point CurrentMousePosition0Based
{
get
{
return new Point(CurrentMousePosition.X - ScreenRectangle.X, CurrentMousePosition.Y - ScreenRectangle.Y);
}
}
public bool ShowRectangleInfo { get; set; }
private Timer timer;
private Bitmap surface;
private Graphics gSurface;
private Pen borderDotPen, borderDotPen2;
private Point positionOnClick;
private bool isMouseDown;
private Stopwatch penTimer;
public RectangleTransparent()
{
StartPosition = FormStartPosition.Manual;
Bounds = ScreenRectangle;
Text = "ShareX - " + Resources.RectangleTransparent_RectangleTransparent_Rectangle_capture_transparent;
Shown += RectangleLight_Shown;
KeyUp += RectangleLight_KeyUp;
MouseDown += RectangleLight_MouseDown;
MouseUp += RectangleLight_MouseUp;
borderDotPen = new Pen(Color.Black, 1);
borderDotPen2 = new Pen(Color.White, 1);
borderDotPen2.DashPattern = new float[] { 5, 5 };
penTimer = Stopwatch.StartNew();
ScreenRectangle = CaptureHelpers.GetScreenBounds();
surface = new Bitmap(ScreenRectangle.Width, ScreenRectangle.Height);
gSurface = Graphics.FromImage(surface);
gSurface.InterpolationMode = InterpolationMode.NearestNeighbor;
gSurface.SmoothingMode = SmoothingMode.HighSpeed;
gSurface.CompositingMode = CompositingMode.SourceCopy;
using (MemoryStream cursorStream = new MemoryStream(Resources.Crosshair))
{
Cursor = new Cursor(cursorStream);
}
timer = new Timer { Interval = 10 };
timer.Tick += timer_Tick;
timer.Start();
}
protected override void Dispose(bool disposing)
{
if (timer != null) timer.Dispose();
if (borderDotPen != null) borderDotPen.Dispose();
if (borderDotPen2 != null) borderDotPen2.Dispose();
if (gSurface != null) gSurface.Dispose();
if (surface != null) surface.Dispose();
base.Dispose(disposing);
}
private void RectangleLight_Shown(object sender, EventArgs e)
{
this.ShowActivate();
}
private void RectangleLight_KeyUp(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Escape)
{
Close();
}
}
private void RectangleLight_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
positionOnClick = CaptureHelpers.GetCursorPosition();
isMouseDown = true;
}
}
private void RectangleLight_MouseUp(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
if (isMouseDown)
{
if (SelectionRectangle0Based.Width > 0 && SelectionRectangle0Based.Height > 0)
{
LastSelectionRectangle0Based = SelectionRectangle0Based;
DialogResult = DialogResult.OK;
}
Close();
}
}
else
{
if (isMouseDown)
{
isMouseDown = false;
Refresh();
}
else
{
Close();
}
}
}
public Image GetAreaImage()
{
Rectangle rect = SelectionRectangle0Based;
if (rect.Width > 0 && rect.Height > 0)
{
return Screenshot.CaptureRectangle(SelectionRectangle);
}
return null;
}
private void timer_Tick(object sender, EventArgs e)
{
CurrentMousePosition = CaptureHelpers.GetCursorPosition();
SelectionRectangle = CaptureHelpers.CreateRectangle(positionOnClick.X, positionOnClick.Y, CurrentMousePosition.X, CurrentMousePosition.Y);
RefreshSurface();
}
private void RefreshSurface()
{
gSurface.Clear(Color.FromArgb(1, 0, 0, 0));
if (isMouseDown)
{
gSurface.DrawRectangleProper(borderDotPen, SelectionRectangle0Based);
borderDotPen2.DashOffset = (int)(penTimer.Elapsed.TotalMilliseconds / 100) % 10;
gSurface.DrawRectangleProper(borderDotPen2, SelectionRectangle0Based);
}
SelectBitmap(surface);
}
}
}

View file

@ -124,7 +124,7 @@ internal static string FFmpegOptionsForm_UpdateUI_Quality_ {
return ResourceManager.GetString("FFmpegOptionsForm_UpdateUI_Quality_", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Ctrl: Drawing mode ░ Space: Fullscreen capture.
/// </summary>
@ -172,8 +172,8 @@ internal static string RectangleRegion_GetAreaText_Area {
}
/// <summary>
/// Looks up a localized string similar to X: {0}, Y: {1}
///R: {2}, G: {3}, B: {4}.
/// Looks up a localized string similar to R: {0}, G: {1}, B: {2}, Hex: {3}
///X: {4}, Y: {5}.
/// </summary>
internal static string RectangleRegion_GetColorPickerText {
get {
@ -192,6 +192,15 @@ internal static string RectangleRegion_GetRulerText_Ruler_info {
}
}
/// <summary>
/// Looks up a localized string similar to Rectangle capture transparent.
/// </summary>
internal static string RectangleTransparent_RectangleTransparent_Rectangle_capture_transparent {
get {
return ResourceManager.GetString("RectangleTransparent_RectangleTransparent_Rectangle_capture_transparent", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Region capture.
/// </summary>

View file

@ -167,4 +167,7 @@ Distance: {6:0.00} px / Angle: {7:0.00}°</value>
<value>R: {0}, G: {1}, B: {2}, Hex: {3}
X: {4}, Y: {5}</value>
<comment>@Invariant</comment></data>
<data name="RectangleTransparent_RectangleTransparent_Rectangle_capture_transparent" xml:space="preserve">
<value>Rectangle capture transparent</value>
</data>
</root>

View file

@ -50,6 +50,9 @@
<Compile Include="Forms\RectangleAnnotate.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Forms\RectangleTransparent.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="RectangleAnnotateOptions.cs" />
<Compile Include="Screencast\FFmpegOptions.cs" />
<Compile Include="Screencast\FFmpegHelper.cs" />

View file

@ -161,9 +161,7 @@ private string GetMetadata(string title, string parentID)
};
}
string json = JsonConvert.SerializeObject(metadata);
return json;
return JsonConvert.SerializeObject(metadata);
}
private void SetPermissions(string fileID, GoogleDrivePermissionRole role, GoogleDrivePermissionType type, string value, bool withLink)
@ -221,7 +219,8 @@ public override UploadResult Upload(Stream stream, string fileName)
string metadata = GetMetadata(fileName, FolderID);
UploadResult result = UploadData(stream, "https://www.googleapis.com/upload/drive/v2/files?uploadType=multipart", fileName, headers: GetAuthHeaders(), requestContentType: "multipart/related", metadata: metadata);
UploadResult result = UploadData(stream, "https://www.googleapis.com/upload/drive/v2/files?uploadType=multipart", fileName, headers: GetAuthHeaders(),
requestContentType: "multipart/related", metadata: metadata);
if (!string.IsNullOrEmpty(result.Response))
{

View file

@ -309,12 +309,13 @@ protected UploadResult UploadData(Stream dataStream, string url, string fileName
IsUploading = true;
StopUploadRequested = false;
try
{
string boundary = CreateBoundary();
byte[] bytesArguments = MakeInputContent(boundary, arguments, false);
byte[] bytesDataOpen = { };
byte[] bytesDataOpen;
byte[] bytesDataDatafile = { };
if (metadata != null)
@ -481,6 +482,7 @@ private byte[] MakeFileInputContentOpen(string boundary, string fileFormName, st
{
string format = string.Format("--{0}\r\nContent-Disposition: form-data; name=\"{1}\"; filename=\"{2}\"\r\nContent-Type: {3}\r\n\r\n",
boundary, fileFormName, fileName, Helpers.GetMimeType(fileName));
return Encoding.UTF8.GetBytes(format);
}

View file

@ -140,6 +140,7 @@ public enum HotkeyType // Localized
WindowRectangle,
RectangleAnnotate,
RectangleLight,
RectangleTransparent,
RoundedRectangleRegion,
EllipseRegion,
TriangleRegion,

View file

@ -51,6 +51,7 @@ private void InitializeComponent()
this.tsmiWindowRectangle = new System.Windows.Forms.ToolStripMenuItem();
this.tsmiRectangleAnnotate = new System.Windows.Forms.ToolStripMenuItem();
this.tsmiRectangleLight = new System.Windows.Forms.ToolStripMenuItem();
this.tsmiRectangleTransparent = 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();
@ -225,6 +226,7 @@ private void InitializeComponent()
this.tssTray3 = new System.Windows.Forms.ToolStripSeparator();
this.tsmiTrayShow = new System.Windows.Forms.ToolStripMenuItem();
this.tsmiTrayExit = new System.Windows.Forms.ToolStripMenuItem();
this.tsmiTrayRectangleTransparent = new System.Windows.Forms.ToolStripMenuItem();
((System.ComponentModel.ISupportInitialize)(this.scMain)).BeginInit();
this.scMain.Panel1.SuspendLayout();
this.scMain.Panel2.SuspendLayout();
@ -368,6 +370,7 @@ private void InitializeComponent()
this.tsmiWindowRectangle,
this.tsmiRectangleAnnotate,
this.tsmiRectangleLight,
this.tsmiRectangleTransparent,
this.tsmiRoundedRectangle,
this.tsmiEllipse,
this.tsmiTriangle,
@ -430,6 +433,13 @@ private void InitializeComponent()
resources.ApplyResources(this.tsmiRectangleLight, "tsmiRectangleLight");
this.tsmiRectangleLight.Click += new System.EventHandler(this.tsmiRectangleLight_Click);
//
// tsmiRectangleTransparent
//
this.tsmiRectangleTransparent.Image = global::ShareX.Properties.Resources.layer_transparent;
this.tsmiRectangleTransparent.Name = "tsmiRectangleTransparent";
resources.ApplyResources(this.tsmiRectangleTransparent, "tsmiRectangleTransparent");
this.tsmiRectangleTransparent.Click += new System.EventHandler(this.tsmiRectangleTransparent_Click);
//
// tsmiRoundedRectangle
//
this.tsmiRoundedRectangle.Image = global::ShareX.Properties.Resources.layer_shape_round;
@ -1266,6 +1276,7 @@ private void InitializeComponent()
this.tsmiTrayWindowRectangle,
this.tsmiTrayRectangleAnnotate,
this.tsmiTrayRectangleLight,
this.tsmiTrayRectangleTransparent,
this.tsmiTrayRoundedRectangle,
this.tsmiTrayEllipse,
this.tsmiTrayTriangle,
@ -1722,6 +1733,13 @@ private void InitializeComponent()
resources.ApplyResources(this.tsmiTrayExit, "tsmiTrayExit");
this.tsmiTrayExit.Click += new System.EventHandler(this.tsmiTrayExit_Click);
//
// tsmiTrayRectangleTransparent
//
this.tsmiTrayRectangleTransparent.Image = global::ShareX.Properties.Resources.layer_transparent;
this.tsmiTrayRectangleTransparent.Name = "tsmiTrayRectangleTransparent";
resources.ApplyResources(this.tsmiTrayRectangleTransparent, "tsmiTrayRectangleTransparent");
this.tsmiTrayRectangleTransparent.Click += new System.EventHandler(this.tsmiTrayRectangleTransparent_Click);
//
// MainForm
//
this.AllowDrop = true;
@ -1949,5 +1967,7 @@ private void InitializeComponent()
private System.Windows.Forms.ContextMenuStrip cmsTray;
private System.Windows.Forms.ToolStripMenuItem tsmiAutomate;
private System.Windows.Forms.ToolStripMenuItem tsmiTrayAutomate;
private System.Windows.Forms.ToolStripMenuItem tsmiRectangleTransparent;
private System.Windows.Forms.ToolStripMenuItem tsmiTrayRectangleTransparent;
}
}

View file

@ -1432,7 +1432,7 @@ private void tsmiImagePreviewAutomatic_Click(object sender, EventArgs e)
private delegate Image ScreenCaptureDelegate();
private enum LastRegionCaptureType { Surface, Light, Annotate }
private enum LastRegionCaptureType { Surface, Light, Transparent, Annotate }
private LastRegionCaptureType lastRegionCaptureType = LastRegionCaptureType.Surface;
@ -1526,6 +1526,9 @@ private void ExecuteJob(TaskSettings taskSettings, HotkeyType job)
case HotkeyType.RectangleLight:
CaptureRectangleLight(safeTaskSettings, false);
break;
case HotkeyType.RectangleTransparent:
CaptureRectangleTransparent(safeTaskSettings, false);
break;
case HotkeyType.RoundedRectangleRegion:
CaptureScreenshot(CaptureType.RoundedRectangle, safeTaskSettings, false);
break;
@ -1898,6 +1901,31 @@ private void CaptureRectangleLight(TaskSettings taskSettings = null, bool autoHi
}, CaptureType.Rectangle, taskSettings, autoHideForm);
}
private void CaptureRectangleTransparent(TaskSettings taskSettings = null, bool autoHideForm = true)
{
if (taskSettings == null) taskSettings = TaskSettings.GetDefaultTaskSettings();
DoCapture(() =>
{
Image img = null;
using (RectangleTransparent rectangleTransparent = new RectangleTransparent())
{
if (rectangleTransparent.ShowDialog() == DialogResult.OK)
{
img = rectangleTransparent.GetAreaImage();
if (img != null)
{
lastRegionCaptureType = LastRegionCaptureType.Transparent;
}
}
}
return img;
}, CaptureType.Rectangle, taskSettings, autoHideForm);
}
private void CaptureLastRegion(TaskSettings taskSettings, bool autoHideForm = true)
{
switch (lastRegionCaptureType)
@ -1934,6 +1962,22 @@ private void CaptureLastRegion(TaskSettings taskSettings, bool autoHideForm = tr
CaptureRectangleLight(taskSettings, autoHideForm);
}
break;
case LastRegionCaptureType.Transparent:
if (!RectangleTransparent.LastSelectionRectangle0Based.IsEmpty)
{
DoCapture(() =>
{
using (Image screenshot = Screenshot.CaptureFullscreen())
{
return ImageHelpers.CropImage(screenshot, RectangleLight.LastSelectionRectangle0Based);
}
}, CaptureType.LastRegion, taskSettings, autoHideForm);
}
else
{
CaptureRectangleTransparent(taskSettings, autoHideForm);
}
break;
case LastRegionCaptureType.Annotate:
if (!RectangleAnnotate.LastSelectionRectangle0Based.IsEmpty)
{
@ -2067,6 +2111,11 @@ private void tsmiRectangleLight_Click(object sender, EventArgs e)
CaptureRectangleLight();
}
private void tsmiRectangleTransparent_Click(object sender, EventArgs e)
{
CaptureRectangleTransparent();
}
private void tsmiEllipse_Click(object sender, EventArgs e)
{
CaptureScreenshot(CaptureType.Ellipse);
@ -2160,6 +2209,11 @@ private void tsmiTrayRectangleLight_Click(object sender, EventArgs e)
CaptureRectangleLight(null, false);
}
private void tsmiTrayRectangleTransparent_Click(object sender, EventArgs e)
{
CaptureRectangleTransparent(null, false);
}
private void tsmiTrayRoundedRectangle_Click(object sender, EventArgs e)
{
CaptureScreenshot(CaptureType.RoundedRectangle, null, false);

View file

@ -366,6 +366,12 @@
<data name="tsmiRectangleLight.Text" xml:space="preserve">
<value>Rectangle (Light)</value>
</data>
<data name="tsmiRectangleTransparent.Size" type="System.Drawing.Size, System.Drawing">
<value>217, 22</value>
</data>
<data name="tsmiRectangleTransparent.Text" xml:space="preserve">
<value>Rectangle (Transparent)</value>
</data>
<data name="tsmiRoundedRectangle.Size" type="System.Drawing.Size, System.Drawing">
<value>217, 22</value>
</data>
@ -1173,6 +1179,12 @@
<data name="tsmiTrayRectangleLight.Text" xml:space="preserve">
<value>Rectangle (Light)</value>
</data>
<data name="tsmiTrayRectangleTransparent.Size" type="System.Drawing.Size, System.Drawing">
<value>217, 22</value>
</data>
<data name="tsmiTrayRectangleTransparent.Text" xml:space="preserve">
<value>Rectangle (Transparent)</value>
</data>
<data name="tsmiTrayRoundedRectangle.Size" type="System.Drawing.Size, System.Drawing">
<value>217, 22</value>
</data>
@ -1501,7 +1513,7 @@
<value>Exit</value>
</data>
<data name="cmsTray.Size" type="System.Drawing.Size, System.Drawing">
<value>189, 418</value>
<value>189, 440</value>
</data>
<data name="&gt;&gt;cmsTray.Name" xml:space="preserve">
<value>cmsTray</value>
@ -1623,6 +1635,12 @@
<data name="&gt;&gt;tsmiRectangleLight.Type" xml:space="preserve">
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;tsmiRectangleTransparent.Name" xml:space="preserve">
<value>tsmiRectangleTransparent</value>
</data>
<data name="&gt;&gt;tsmiRectangleTransparent.Type" xml:space="preserve">
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;tsmiRoundedRectangle.Name" xml:space="preserve">
<value>tsmiRoundedRectangle</value>
</data>
@ -2655,10 +2673,16 @@
<data name="&gt;&gt;tsmiTrayExit.Type" xml:space="preserve">
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;tsmiTrayRectangleTransparent.Name" xml:space="preserve">
<value>tsmiTrayRectangleTransparent</value>
</data>
<data name="&gt;&gt;tsmiTrayRectangleTransparent.Type" xml:space="preserve">
<value>System.Windows.Forms.ToolStripMenuItem, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;$this.Name" xml:space="preserve">
<value>MainForm</value>
</data>
<data name="&gt;&gt;$this.Type" xml:space="preserve">
<value>ShareX.HotkeyForm, ShareX, Version=9.7.0.0, Culture=neutral, PublicKeyToken=null</value>
<value>ShareX.HotkeyForm, ShareX, Version=9.8.0.0, Culture=neutral, PublicKeyToken=null</value>
</data>
</root>

View file

@ -430,7 +430,7 @@ public static System.Drawing.Bitmap clipboard {
/// </summary>
public static System.Drawing.Bitmap clipboard_list {
get {
object obj = ResourceManager.GetObject("clipboard-list", resourceCulture);
object obj = ResourceManager.GetObject("clipboard_list", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
@ -999,6 +999,16 @@ public static System.Drawing.Bitmap layer_shape_round {
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>
public static System.Drawing.Bitmap layer_transparent {
get {
object obj = ResourceManager.GetObject("layer_transparent", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Looks up a localized resource of type System.Drawing.Bitmap.
/// </summary>

View file

@ -134,6 +134,9 @@
<data name="UploadTask_CreateURLShortenerTask_Shorten_URL___0__" xml:space="preserve">
<value>Shorten URL ({0})</value>
</data>
<data name="Polygon" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Polygon.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="ScreenRecordForm_StartRecording_There_is_no_valid_CLI_video_encoder_selected_" xml:space="preserve">
<value>There is no valid CLI video encoder selected.</value>
</data>
@ -159,15 +162,15 @@ Press 'No' to cancel the current upload and disable screenshot auto uploading.</
<data name="google_plus" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\google_plus.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="toolbox" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\toolbox.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="au" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\au.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="ScreenRecordForm_StartRecording_FFmpeg_error" xml:space="preserve">
<value>FFmpeg error</value>
</data>
<data name="checkbox_check" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\checkbox_check.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="ScreenRecordForm_DownloaderForm_InstallRequested_FFmpeg_successfully_downloaded_" xml:space="preserve">
<value>FFmpeg successfully downloaded.</value>
</data>
@ -250,6 +253,9 @@ Please select a different hotkey or quit the conflicting application and reopen
<data name="AutoCaptureForm_Execute_Stop" xml:space="preserve">
<value>Stop</value>
</data>
<data name="robot" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\robot.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="UploadTask_CreateShareURLTask_Share_URL___0__" xml:space="preserve">
<value>Share URL ({0})</value>
</data>
@ -280,8 +286,8 @@ Please select a different hotkey or quit the conflicting application and reopen
<data name="application_blue" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\resources\application-blue.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="ActionsForm_btnOK_Click_File_path_can_t_be_empty_" xml:space="preserve">
<value>File path can't be empty.</value>
<data name="application_task" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\resources\application-task.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="TaskSettingsForm_UpdateWindowTitle_Task_settings" xml:space="preserve">
<value>Task settings</value>
@ -319,27 +325,24 @@ Would you like to automatically download it?</value>
<value>Waiting...</value>
<comment>Text must be equal or lower than 54 characters because of tray icon text length limit.</comment>
</data>
<data name="BeforeUploadForm_BeforeUploadForm__0__is_about_to_be_uploaded_to__1___You_may_choose_a_different_destination_" xml:space="preserve">
<value>{0} is about to be uploaded to {1}. You may choose a different destination.</value>
</data>
<data name="TaskSettingsForm_UpdateUploaderMenuNames_Image_uploader___0_" xml:space="preserve">
<value>Image uploader: {0}</value>
</data>
<data name="Polygon" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Polygon.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
<data name="ScreenRecordForm_StartRecording_CLI_video_encoder_file_does_not_exist__" xml:space="preserve">
<value>CLI video encoder file does not exist: </value>
</data>
<data name="layer_pencil" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\layer--pencil.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="document_copy" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\document-copy.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="camera" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\camera.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="MainForm_UpdateMenu_Hide_menu" xml:space="preserve">
<value>Hide menu</value>
</data>
<data name="monitor" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\monitor.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="navigation_000_button" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\navigation-000-button.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
@ -358,6 +361,9 @@ Would you like to automatically download it?</value>
<data name="Diamond" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\diamond.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="ActionsForm_btnOK_Click_File_path_can_t_be_empty_" xml:space="preserve">
<value>File path can't be empty.</value>
</data>
<data name="UploadTask_DoAfterCaptureJobs_Choose_a_folder_to_save" xml:space="preserve">
<value>Choose a folder to save</value>
</data>
@ -376,8 +382,8 @@ Would you like to automatically download it?</value>
<data name="UploadManager_IsUploadConfirmed_Upload_files" xml:space="preserve">
<value>Upload files</value>
</data>
<data name="ScreenRecordForm_StartRecording_CLI_video_encoder_file_does_not_exist__" xml:space="preserve">
<value>CLI video encoder file does not exist: </value>
<data name="document_copy" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\document-copy.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="globe_share" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\globe-share.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
@ -385,6 +391,9 @@ Would you like to automatically download it?</value>
<data name="folder_tree" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\folder-tree.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="pencil" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\pencil.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="TaskManager_task_UploadCompleted_Error" xml:space="preserve">
<value>Error</value>
</data>
@ -413,7 +422,7 @@ here</value>
<data name="GitHub" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\GitHub.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="clipboard-list" type="System.Resources.ResXFileRef, System.Windows.Forms">
<data name="clipboard_list" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\clipboard-list.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="traffic_cone" type="System.Resources.ResXFileRef, System.Windows.Forms">
@ -460,9 +469,6 @@ Please run ShareX as administrator to change personal folder path.</value>
<data name="navigation_090_button" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\navigation-090-button.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="layers_arrange" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\layers-arrange.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="WatchFolderForm_btnPathBrowse_Click_Choose_folder_path" xml:space="preserve">
<value>Choose folder path</value>
</data>
@ -476,9 +482,6 @@ Would you like to restart ShareX?</value>
<data name="layer_shape" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\layer-shape.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="eraser" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\eraser.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="image_pencil" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\image--pencil.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
@ -491,9 +494,6 @@ Would you like to restart ShareX?</value>
<data name="cn" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\cn.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="categories" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\categories.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="FileExistForm_txtNewName_TextChanged_Use_new_name__" xml:space="preserve">
<value>Use new name: </value>
</data>
@ -554,6 +554,9 @@ Would you like to restart ShareX?</value>
<data name="clipboard" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\clipboard.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="barcode_2d" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\barcode-2d.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Program_Run_Unable_to_create_folder_" xml:space="preserve">
<value>Unable to create folder:</value>
</data>
@ -591,6 +594,9 @@ Would you like to restart ShareX?</value>
<value>Download failed:
{0}</value>
</data>
<data name="TaskSettingsForm_UpdateUploaderMenuNames_After_upload___0_" xml:space="preserve">
<value>After upload: {0}</value>
</data>
<data name="layer_shape_ellipse" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\layer-shape-ellipse.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
@ -606,8 +612,8 @@ Would you like to restart ShareX?</value>
<data name="layer_shape_polygon" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\layer-shape-polygon.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="toolbox" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\toolbox.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
<data name="checkbox_check" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\checkbox_check.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="UploadTask_OnUploadCompleted_Stopped" xml:space="preserve">
<value>Stopped</value>
@ -630,9 +636,6 @@ Would you like to restart ShareX?</value>
<data name="wrench_screwdriver" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\wrench-screwdriver.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="application_browser" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\resources\application-browser.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="ErrorSound" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\ErrorSound.wav;System.IO.MemoryStream, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
@ -642,8 +645,8 @@ Would you like to restart ShareX?</value>
<data name="MainForm_tsmiTestTextUpload_Click_Text_upload_test" xml:space="preserve">
<value>Text upload test</value>
</data>
<data name="application_task" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\resources\application-task.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
<data name="application_browser" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\resources\application-browser.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="notebook" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\notebook.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
@ -669,20 +672,20 @@ Would you like to restart ShareX?</value>
<data name="RoundedRectangle" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\RoundedRectangle.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="BeforeUploadForm_BeforeUploadForm__0__is_about_to_be_uploaded_to__1___You_may_choose_a_different_destination_" xml:space="preserve">
<value>{0} is about to be uploaded to {1}. You may choose a different destination.</value>
<data name="monitor" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\monitor.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="AboutForm_AboutForm_Website" xml:space="preserve">
<value>Website</value>
</data>
<data name="pencil" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\pencil.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
<data name="categories" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\categories.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="TaskSettingsForm_UpdateUploaderMenuNames_After_upload___0_" xml:space="preserve">
<value>After upload: {0}</value>
<data name="layers_arrange" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\layers-arrange.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="barcode_2d" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\barcode-2d.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
<data name="eraser" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\eraser.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="ScreenRecordForm_StartRecording_Click_tray_icon_to_start_recording_" xml:space="preserve">
<value>Click to start recording.</value>
@ -694,7 +697,7 @@ Would you like to restart ShareX?</value>
<data name="ScreenColorPicker_UpdateControls_Start_screen_color_picker" xml:space="preserve">
<value>Start screen color picker</value>
</data>
<data name="robot" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\robot.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
<data name="layer_transparent" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\layer-transparent.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
</root>

Binary file not shown.

After

Width:  |  Height:  |  Size: 566 B

View file

@ -751,6 +751,7 @@
<None Include="Resources\us.png" />
<None Include="Resources\clipboard-list.png" />
<None Include="Resources\robot.png" />
<None Include="Resources\layer-transparent.png" />
<Content Include="ShareX_Icon.ico" />
<None Include="Resources\globe--pencil.png" />
<None Include="Resources\camcorder--pencil.png" />