diff --git a/ImageEffectsLib/ImageEffectsForm.Designer.cs b/ImageEffectsLib/ImageEffectsForm.Designer.cs index 9732bec8d..dcc32437f 100644 --- a/ImageEffectsLib/ImageEffectsForm.Designer.cs +++ b/ImageEffectsLib/ImageEffectsForm.Designer.cs @@ -41,10 +41,10 @@ private void InitializeComponent() this.btnMoveDown = new System.Windows.Forms.Button(); this.btnDuplicate = new System.Windows.Forms.Button(); this.lblStatus = new System.Windows.Forms.Label(); - this.btnTest = new System.Windows.Forms.Button(); this.btnRefresh = new System.Windows.Forms.Button(); this.btnLoadImage = new System.Windows.Forms.Button(); this.pbResult = new HelpersLib.MyPictureBox(); + this.btnSaveImage = new System.Windows.Forms.Button(); this.SuspendLayout(); // // tvEffects @@ -189,18 +189,6 @@ private void InitializeComponent() this.lblStatus.TabIndex = 12; this.lblStatus.Text = "Status"; // - // btnTest - // - this.btnTest.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); - this.btnTest.Location = new System.Drawing.Point(708, 734); - this.btnTest.Name = "btnTest"; - this.btnTest.Size = new System.Drawing.Size(72, 24); - this.btnTest.TabIndex = 13; - this.btnTest.Text = "Test"; - this.btnTest.UseVisualStyleBackColor = true; - this.btnTest.Visible = false; - this.btnTest.Click += new System.EventHandler(this.btnTest_Click); - // // btnRefresh // this.btnRefresh.Location = new System.Drawing.Point(408, 8); @@ -214,11 +202,12 @@ private void InitializeComponent() // // btnLoadImage // - this.btnLoadImage.Location = new System.Drawing.Point(618, 734); + this.btnLoadImage.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.btnLoadImage.Location = new System.Drawing.Point(576, 734); this.btnLoadImage.Name = "btnLoadImage"; - this.btnLoadImage.Size = new System.Drawing.Size(84, 24); + this.btnLoadImage.Size = new System.Drawing.Size(99, 24); this.btnLoadImage.TabIndex = 15; - this.btnLoadImage.Text = "Load image"; + this.btnLoadImage.Text = "Load image..."; this.btnLoadImage.UseVisualStyleBackColor = true; this.btnLoadImage.Visible = false; this.btnLoadImage.Click += new System.EventHandler(this.btnLoadImage_Click); @@ -237,14 +226,26 @@ private void InitializeComponent() this.pbResult.Size = new System.Drawing.Size(688, 448); this.pbResult.TabIndex = 11; // + // btnSaveImage + // + this.btnSaveImage.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.btnSaveImage.Location = new System.Drawing.Point(681, 734); + this.btnSaveImage.Name = "btnSaveImage"; + this.btnSaveImage.Size = new System.Drawing.Size(99, 24); + this.btnSaveImage.TabIndex = 16; + this.btnSaveImage.Text = "Save image..."; + this.btnSaveImage.UseVisualStyleBackColor = true; + this.btnSaveImage.Visible = false; + this.btnSaveImage.Click += new System.EventHandler(this.btnSaveImage_Click); + // // ImageEffectsForm // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.ClientSize = new System.Drawing.Size(944, 766); + this.Controls.Add(this.btnSaveImage); this.Controls.Add(this.btnLoadImage); this.Controls.Add(this.btnRefresh); - this.Controls.Add(this.btnTest); this.Controls.Add(this.lblStatus); this.Controls.Add(this.btnDuplicate); this.Controls.Add(this.btnMoveDown); @@ -283,9 +284,9 @@ private void InitializeComponent() private System.Windows.Forms.Button btnMoveDown; private System.Windows.Forms.Button btnDuplicate; private System.Windows.Forms.Label lblStatus; - private System.Windows.Forms.Button btnTest; private System.Windows.Forms.Button btnRefresh; private System.Windows.Forms.Button btnLoadImage; + private System.Windows.Forms.Button btnSaveImage; } } diff --git a/ImageEffectsLib/ImageEffectsForm.cs b/ImageEffectsLib/ImageEffectsForm.cs index b7a9eb4c5..094962b5f 100644 --- a/ImageEffectsLib/ImageEffectsForm.cs +++ b/ImageEffectsLib/ImageEffectsForm.cs @@ -28,6 +28,7 @@ You should have received a copy of the GNU General Public License using System.Collections.Generic; using System.Diagnostics; using System.Drawing; +using System.Drawing.Imaging; using System.Linq; using System.Windows.Forms; @@ -54,11 +55,11 @@ public ImageEffectsForm(Image img, List effects = null) UpdatePreview(); } - public void Test() + public void EditorMode() { btnRefresh.Visible = true; btnLoadImage.Visible = true; - btnTest.Visible = true; + btnSaveImage.Visible = true; } private void AddAllEffectsToTreeView() @@ -320,11 +321,21 @@ private void btnLoadImage_Click(object sender, EventArgs e) } } - private void btnTest_Click(object sender, EventArgs e) + private void btnSaveImage_Click(object sender, EventArgs e) { - AddEffect(new Background { Color = Color.Black }); - AddEffect(new Border { Color = Color.Red }); - UpdatePreview(); + using (SaveFileDialog sfd = new SaveFileDialog()) + { + sfd.DefaultExt = ".png"; + sfd.Filter = "PNG image (*.png)|*.png"; + + if (sfd.ShowDialog() == DialogResult.OK) + { + using (Image preview = ApplyEffects()) + { + preview.Save(sfd.FileName, ImageFormat.Png); + } + } + } } private void btnOK_Click(object sender, EventArgs e) diff --git a/ShareX/Forms/MainForm.Designer.cs b/ShareX/Forms/MainForm.Designer.cs index f78ae6e16..e3ef2ba71 100644 --- a/ShareX/Forms/MainForm.Designer.cs +++ b/ShareX/Forms/MainForm.Designer.cs @@ -91,6 +91,7 @@ private void InitializeComponent() this.tsmiScreenColorPicker = new System.Windows.Forms.ToolStripMenuItem(); this.tsmiHashCheck = new System.Windows.Forms.ToolStripMenuItem(); this.tsmiIndexFolder = new System.Windows.Forms.ToolStripMenuItem(); + this.tsmiImageEffects = new System.Windows.Forms.ToolStripMenuItem(); this.tsbScreenshotsFolder = new System.Windows.Forms.ToolStripButton(); this.tsbHistory = new System.Windows.Forms.ToolStripButton(); this.tsbImageHistory = new System.Windows.Forms.ToolStripButton(); @@ -105,7 +106,6 @@ private void InitializeComponent() this.tsmiTestURLShortener = new System.Windows.Forms.ToolStripMenuItem(); this.tsmiTestUploaders = new System.Windows.Forms.ToolStripMenuItem(); this.tsmiTestShapeCapture = new System.Windows.Forms.ToolStripMenuItem(); - this.tsmiTestImageEffects = new System.Windows.Forms.ToolStripMenuItem(); this.scMain = new HelpersLib.SplitContainerCustomSplitter(); this.lblDragAndDropTip = new System.Windows.Forms.Label(); this.lblSplitter = new System.Windows.Forms.Label(); @@ -208,6 +208,7 @@ private void InitializeComponent() this.tssTray3 = new System.Windows.Forms.ToolStripSeparator(); this.tsmiTrayExit = new System.Windows.Forms.ToolStripMenuItem(); this.ssToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.tsmiTrayImageEffects = new System.Windows.Forms.ToolStripMenuItem(); this.tsMain.SuspendLayout(); this.scMain.Panel1.SuspendLayout(); this.scMain.Panel2.SuspendLayout(); @@ -530,7 +531,8 @@ private void InitializeComponent() this.tsddbTools.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { this.tsmiScreenColorPicker, this.tsmiHashCheck, - this.tsmiIndexFolder}); + this.tsmiIndexFolder, + this.tsmiImageEffects}); this.tsddbTools.Image = global::ShareX.Properties.Resources.toolbox; this.tsddbTools.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft; this.tsddbTools.ImageTransparentColor = System.Drawing.Color.Magenta; @@ -562,6 +564,14 @@ private void InitializeComponent() this.tsmiIndexFolder.Text = "Index folder..."; this.tsmiIndexFolder.Click += new System.EventHandler(this.tsmiIndexFolder_Click); // + // tsmiImageEffects + // + this.tsmiImageEffects.Image = global::ShareX.Properties.Resources.image_saturation; + this.tsmiImageEffects.Name = "tsmiImageEffects"; + this.tsmiImageEffects.Size = new System.Drawing.Size(183, 22); + this.tsmiImageEffects.Text = "Image effects..."; + this.tsmiImageEffects.Click += new System.EventHandler(this.tsmiImageEffects_Click); + // // tsbScreenshotsFolder // this.tsbScreenshotsFolder.Image = global::ShareX.Properties.Resources.folder_open_image; @@ -634,8 +644,7 @@ private void InitializeComponent() this.tsmiTestFileUpload, this.tsmiTestURLShortener, this.tsmiTestUploaders, - this.tsmiTestShapeCapture, - this.tsmiTestImageEffects}); + this.tsmiTestShapeCapture}); this.tsmiDebug.Image = global::ShareX.Properties.Resources.block; this.tsmiDebug.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft; this.tsmiDebug.ImageTransparentColor = System.Drawing.Color.Magenta; @@ -699,14 +708,6 @@ private void InitializeComponent() this.tsmiTestShapeCapture.Text = "Test shape capture..."; this.tsmiTestShapeCapture.Click += new System.EventHandler(this.tsmiTestShapeCapture_Click); // - // tsmiTestImageEffects - // - this.tsmiTestImageEffects.Image = global::ShareX.Properties.Resources.image_saturation; - this.tsmiTestImageEffects.Name = "tsmiTestImageEffects"; - this.tsmiTestImageEffects.Size = new System.Drawing.Size(182, 22); - this.tsmiTestImageEffects.Text = "Test image effects..."; - this.tsmiTestImageEffects.Click += new System.EventHandler(this.tsmiTestImageEffects_Click); - // // scMain // this.scMain.Dock = System.Windows.Forms.DockStyle.Fill; @@ -1463,7 +1464,8 @@ private void InitializeComponent() this.tsmiTrayTools.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { this.tsmiTrayScreenColorPicker, this.tsmiTrayHashCheck, - this.tsmiTrayIndexFolder}); + this.tsmiTrayIndexFolder, + this.tsmiTrayImageEffects}); this.tsmiTrayTools.Image = global::ShareX.Properties.Resources.toolbox; this.tsmiTrayTools.Name = "tsmiTrayTools"; this.tsmiTrayTools.Size = new System.Drawing.Size(188, 22); @@ -1552,6 +1554,14 @@ private void InitializeComponent() this.ssToolStripMenuItem.Size = new System.Drawing.Size(152, 22); this.ssToolStripMenuItem.Text = "ss"; // + // tsmiTrayImageEffects + // + this.tsmiTrayImageEffects.Image = global::ShareX.Properties.Resources.image_saturation; + this.tsmiTrayImageEffects.Name = "tsmiTrayImageEffects"; + this.tsmiTrayImageEffects.Size = new System.Drawing.Size(183, 22); + this.tsmiTrayImageEffects.Text = "Image effects..."; + this.tsmiTrayImageEffects.Click += new System.EventHandler(this.tsmiImageEffects_Click); + // // MainForm // this.AllowDrop = true; @@ -1736,7 +1746,8 @@ private void InitializeComponent() private System.Windows.Forms.ToolStripSeparator tssTray3; private System.Windows.Forms.ToolStripMenuItem tsmiIndexFolder; private System.Windows.Forms.ToolStripMenuItem tsmiTrayIndexFolder; - private System.Windows.Forms.ToolStripMenuItem tsmiTestImageEffects; public System.Windows.Forms.Label lblDragAndDropTip; + private System.Windows.Forms.ToolStripMenuItem tsmiImageEffects; + private System.Windows.Forms.ToolStripMenuItem tsmiTrayImageEffects; } } \ No newline at end of file diff --git a/ShareX/Forms/MainForm.cs b/ShareX/Forms/MainForm.cs index fd128b034..01d0bb92b 100644 --- a/ShareX/Forms/MainForm.cs +++ b/ShareX/Forms/MainForm.cs @@ -679,13 +679,6 @@ private void tsmiTestShapeCapture_Click(object sender, EventArgs e) new RegionCapturePreview(Program.DefaultTaskSettings.CaptureSettings.SurfaceOptions).Show(); } - private void tsmiTestImageEffects_Click(object sender, EventArgs e) - { - ImageEffectsForm form = new ImageEffectsForm(ShareXResources.Logo); - form.Test(); - form.Show(); - } - private void tsmiScreenRecorderGIF_Click(object sender, EventArgs e) { DoScreenRecorder(); @@ -762,6 +755,13 @@ private void tsmiIndexFolder_Click(object sender, EventArgs e) OpenIndexFolder(); } + private void tsmiImageEffects_Click(object sender, EventArgs e) + { + ImageEffectsForm form = new ImageEffectsForm(ShareXResources.Logo); + form.EditorMode(); + form.Show(); + } + private void tsbScreenshotsFolder_Click(object sender, EventArgs e) { Helpers.OpenFolder(Program.ScreenshotsPath); diff --git a/ShareX/Forms/MainForm.resx b/ShareX/Forms/MainForm.resx index 2e53747b6..fce376f5b 100644 --- a/ShareX/Forms/MainForm.resx +++ b/ShareX/Forms/MainForm.resx @@ -135,31 +135,30 @@ - iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 - YQUAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAABcElEQVQ4T5WSvUsDQRDFZysr - /4EQEQMWwU5tBDEoKUWsBC0C50cUrDzxAxQ0xV0MFiJRSFDQQkGQQCBoI1jYCIkg2iiIgoWFFoFIiGjA - cWYvJ+d6xeXBb2eZ5T22eICIEtIkH7bycYvCGsCVAu/4TfocAT7pJE2E/wRoRExBcwuYlu6a2gMAl4bE - wHIWv0sZCd95x29qgF86HdJ6AS5isF59O8Svl30J33l3vgINasAMwSG/MxIC/9kybH4872D5YQsrTyl8 - LZjIO2JODWjiwylzGCC3AKn3uw0s3sSR5/2pjp/VKvJeDViUrpraKO5Yl+yVbhNYvDaQZ/5oHJOPFeS9 - GtAsnaSBToDdKYt0FMztMThRoX2PGrAq3TXl6D9Mdh4gM/sfCrF8joAWPoQQEA2L+ntAxgSbbToCor4e - kKnVGcCM9gnvPSDDEhEkDuwZCYmg5x64MdItvPfADVKj5x64QfLp/ZBUO8AMdcEgIsIPf0PbCdPaFycA - AAAASUVORK5CYII= + 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 + Gyf/XTD8Agr4KSBbdehFAAAAAElFTkSuQmCC @@ -173,15 +172,14 @@ - iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 - YQUAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAABcElEQVQ4T5WSvUsDQRDFZysr - /4EQEQMWwU5tBDEoKUWsBC0C50cUrDzxAxQ0xV0MFiJRSFDQQkGQQCBoI1jYCIkg2iiIgoWFFoFIiGjA - cWYvJ+d6xeXBb2eZ5T22eICIEtIkH7bycYvCGsCVAu/4TfocAT7pJE2E/wRoRExBcwuYlu6a2gMAl4bE - wHIWv0sZCd95x29qgF86HdJ6AS5isF59O8Svl30J33l3vgINasAMwSG/MxIC/9kybH4872D5YQsrTyl8 - LZjIO2JODWjiwylzGCC3AKn3uw0s3sSR5/2pjp/VKvJeDViUrpraKO5Yl+yVbhNYvDaQZ/5oHJOPFeS9 - GtAsnaSBToDdKYt0FMztMThRoX2PGrAq3TXl6D9Mdh4gM/sfCrF8joAWPoQQEA2L+ntAxgSbbToCor4e - kKnVGcCM9gnvPSDDEhEkDuwZCYmg5x64MdItvPfADVKj5x64QfLp/ZBUO8AMdcEgIsIPf0PbCdPaFycA - AAAASUVORK5CYII= + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAABl0RVh0U29m + dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAFwSURBVDhPlZK9SwNBEMVnKyv/gRARAxbBTm0EMSgp + RawELQLnRxSsPPEDFDTFXQwWIlFIUNBCQZBAIGgjWNgIiSDaKIiChYUWgUiIaMBxZi8n53rF5cFvZ5nl + PbZ4gIgS0iQftvJxi8IawJUC7/hN+hwBPukkTYT/BGhETEFzC5iW7praAwCXhsTAcha/SxkJ33nHb2qA + Xzod0noBLmKwXn07xK+XfQnfeXe+Ag1qwAzBIb8zEgL/2TJsfjzvYPlhCytPKXwtmMg7Yk4NaOLDKXMY + ILcAqfe7DSzexJHn/amOn9Uq8l4NWJSumtoo7liX7JVuE1i8NpBn/mgck48V5L0a0CydpIFOgN0pi3QU + zO0xOFGhfY8asCrdNeXoP0x2HiAz+x8KsXyOgBY+hBAQDYv6e0DGBJttOgKivh6QqdUZwIz2Ce89IMMS + ESQO7BkJiaDnHrgx0i2898ANUqPnHrhB8un9kFQ7wAx1wSAiwg9/Q9sJ09oXJwAAAABJRU5ErkJggg==