From bcaca6a0ad95f387f94dd1f04e571475ac5e6af8 Mon Sep 17 00:00:00 2001 From: Jaex Date: Sun, 23 Jan 2022 12:14:53 +0300 Subject: [PATCH] Added canvas color button to canvas size form --- ShareX.HelpersLib/Helpers/ImageHelpers.cs | 10 ++-- .../Manipulations/Canvas.cs | 6 +- .../Forms/CanvasSizeForm.Designer.cs | 11 ++++ .../Forms/CanvasSizeForm.cs | 19 +++++-- .../Forms/CanvasSizeForm.resx | 55 ++++++++++++++----- .../Shapes/ShapeManager.cs | 5 +- 6 files changed, 76 insertions(+), 30 deletions(-) diff --git a/ShareX.HelpersLib/Helpers/ImageHelpers.cs b/ShareX.HelpersLib/Helpers/ImageHelpers.cs index 64fe7d6b8..d29ac4f18 100644 --- a/ShareX.HelpersLib/Helpers/ImageHelpers.cs +++ b/ShareX.HelpersLib/Helpers/ImageHelpers.cs @@ -413,6 +413,11 @@ public static Bitmap AddCanvas(Image img, Padding margin, Color canvasColor) using (Brush brush = new SolidBrush(canvasColor)) { + if (margin.Left > 0) + { + g.FillRectangle(brush, 0, 0, margin.Left, bmp.Height); + } + if (margin.Top > 0) { g.FillRectangle(brush, 0, 0, bmp.Width, margin.Top); @@ -427,11 +432,6 @@ public static Bitmap AddCanvas(Image img, Padding margin, Color canvasColor) { g.FillRectangle(brush, 0, bmp.Height - margin.Bottom, bmp.Width, margin.Bottom); } - - if (margin.Left > 0) - { - g.FillRectangle(brush, 0, 0, margin.Left, bmp.Height); - } } } } diff --git a/ShareX.ImageEffectsLib/Manipulations/Canvas.cs b/ShareX.ImageEffectsLib/Manipulations/Canvas.cs index a18b800f3..d46eebc4a 100644 --- a/ShareX.ImageEffectsLib/Manipulations/Canvas.cs +++ b/ShareX.ImageEffectsLib/Manipulations/Canvas.cs @@ -60,16 +60,14 @@ public override Bitmap Apply(Bitmap bmp) if (MarginMode == CanvasMarginMode.PercentageOfCanvas) { - // Calculate the amount of padding to add to the sides, based on canvas size. canvasMargin = new Padding(); - canvasMargin.Top = (int)Math.Round(Margin.Top / 100f * bmp.Height); - canvasMargin.Bottom = (int)Math.Round(Margin.Bottom / 100f * bmp.Height); canvasMargin.Left = (int)Math.Round(Margin.Left / 100f * bmp.Width); canvasMargin.Right = (int)Math.Round(Margin.Right / 100f * bmp.Width); + canvasMargin.Top = (int)Math.Round(Margin.Top / 100f * bmp.Height); + canvasMargin.Bottom = (int)Math.Round(Margin.Bottom / 100f * bmp.Height); } else { - // Use the margin as is (absolute size) canvasMargin = Margin; } diff --git a/ShareX.ScreenCaptureLib/Forms/CanvasSizeForm.Designer.cs b/ShareX.ScreenCaptureLib/Forms/CanvasSizeForm.Designer.cs index c4c7a4b03..2929dccea 100644 --- a/ShareX.ScreenCaptureLib/Forms/CanvasSizeForm.Designer.cs +++ b/ShareX.ScreenCaptureLib/Forms/CanvasSizeForm.Designer.cs @@ -39,6 +39,7 @@ private void InitializeComponent() this.nudBottom = new System.Windows.Forms.NumericUpDown(); this.btnOK = new System.Windows.Forms.Button(); this.btnCancel = new System.Windows.Forms.Button(); + this.cbtnCanvasColor = new ShareX.HelpersLib.ColorButton(); ((System.ComponentModel.ISupportInitialize)(this.nudLeft)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.nudRight)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.nudTop)).BeginInit(); @@ -140,6 +141,14 @@ private void InitializeComponent() this.btnCancel.UseVisualStyleBackColor = true; this.btnCancel.Click += new System.EventHandler(this.btnCancel_Click); // + // cbtnCanvasColor + // + this.cbtnCanvasColor.Color = System.Drawing.Color.Transparent; + this.cbtnCanvasColor.ColorPickerOptions = null; + resources.ApplyResources(this.cbtnCanvasColor, "cbtnCanvasColor"); + this.cbtnCanvasColor.Name = "cbtnCanvasColor"; + this.cbtnCanvasColor.UseVisualStyleBackColor = true; + // // CanvasSizeForm // this.AcceptButton = this.btnOK; @@ -147,6 +156,7 @@ private void InitializeComponent() this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.BackColor = System.Drawing.SystemColors.Window; this.CancelButton = this.btnCancel; + this.Controls.Add(this.cbtnCanvasColor); this.Controls.Add(this.btnCancel); this.Controls.Add(this.btnOK); this.Controls.Add(this.lblBottom); @@ -183,5 +193,6 @@ private void InitializeComponent() private System.Windows.Forms.NumericUpDown nudBottom; private System.Windows.Forms.Button btnOK; private System.Windows.Forms.Button btnCancel; + private HelpersLib.ColorButton cbtnCanvasColor; } } \ No newline at end of file diff --git a/ShareX.ScreenCaptureLib/Forms/CanvasSizeForm.cs b/ShareX.ScreenCaptureLib/Forms/CanvasSizeForm.cs index b7f0904ff..58d0333ed 100644 --- a/ShareX.ScreenCaptureLib/Forms/CanvasSizeForm.cs +++ b/ShareX.ScreenCaptureLib/Forms/CanvasSizeForm.cs @@ -25,6 +25,7 @@ using ShareX.HelpersLib; using System; +using System.Drawing; using System.Windows.Forms; namespace ShareX.ScreenCaptureLib @@ -32,6 +33,7 @@ namespace ShareX.ScreenCaptureLib public partial class CanvasSizeForm : Form { public Padding Canvas { get; private set; } + public Color CanvasColor { get; private set; } public CanvasSizeForm() { @@ -39,13 +41,16 @@ public CanvasSizeForm() ShareXResources.ApplyTheme(this); } - public CanvasSizeForm(Padding canvas) : this() + public CanvasSizeForm(Padding canvas, Color canvasColor) : this() { Canvas = canvas; - nudLeft.SetValue(canvas.Left); - nudTop.SetValue(canvas.Top); - nudRight.SetValue(canvas.Right); - nudBottom.SetValue(canvas.Bottom); + CanvasColor = canvasColor; + + nudLeft.SetValue(Canvas.Left); + nudTop.SetValue(Canvas.Top); + nudRight.SetValue(Canvas.Right); + nudBottom.SetValue(Canvas.Bottom); + cbtnCanvasColor.Color = CanvasColor; } private void CanvasSizeForm_Shown(object sender, EventArgs e) @@ -56,13 +61,17 @@ private void CanvasSizeForm_Shown(object sender, EventArgs e) private void btnOK_Click(object sender, EventArgs e) { DialogResult = DialogResult.OK; + Canvas = new Padding((int)nudLeft.Value, (int)nudTop.Value, (int)nudRight.Value, (int)nudBottom.Value); + CanvasColor = cbtnCanvasColor.Color; + Close(); } private void btnCancel_Click(object sender, EventArgs e) { DialogResult = DialogResult.Cancel; + Close(); } } diff --git a/ShareX.ScreenCaptureLib/Forms/CanvasSizeForm.resx b/ShareX.ScreenCaptureLib/Forms/CanvasSizeForm.resx index 18618c634..551313c20 100644 --- a/ShareX.ScreenCaptureLib/Forms/CanvasSizeForm.resx +++ b/ShareX.ScreenCaptureLib/Forms/CanvasSizeForm.resx @@ -142,7 +142,7 @@ $this - 9 + 10 True @@ -169,7 +169,7 @@ $this - 8 + 9 True @@ -196,7 +196,7 @@ $this - 6 + 7 160, 80 @@ -220,7 +220,7 @@ $this - 7 + 8 True @@ -247,7 +247,7 @@ $this - 4 + 5 88, 24 @@ -271,7 +271,7 @@ $this - 5 + 6 True @@ -298,7 +298,7 @@ $this - 2 + 3 88, 136 @@ -322,16 +322,16 @@ $this - 3 + 4 - 8, 176 + 8, 200 108, 24 - 8 + 9 OK @@ -346,16 +346,16 @@ $this - 1 + 2 - 124, 176 + 124, 200 108, 24 - 9 + 10 Cancel @@ -370,6 +370,33 @@ $this + 1 + + + 8, 168 + + + 144, 23 + + + 8 + + + Canvas color... + + + MiddleLeft + + + cbtnCanvasColor + + + ShareX.HelpersLib.ColorButton, ShareX.HelpersLib, Version=13.7.1.0, Culture=neutral, PublicKeyToken=null + + + $this + + 0 @@ -379,7 +406,7 @@ 6, 13 - 240, 208 + 240, 232 CenterScreen diff --git a/ShareX.ScreenCaptureLib/Shapes/ShapeManager.cs b/ShareX.ScreenCaptureLib/Shapes/ShapeManager.cs index 86fd334bc..3e1abdf26 100644 --- a/ShareX.ScreenCaptureLib/Shapes/ShapeManager.cs +++ b/ShareX.ScreenCaptureLib/Shapes/ShapeManager.cs @@ -1987,12 +1987,13 @@ private void ChangeCanvasSize() { Form.Pause(); - using (CanvasSizeForm canvasSizeForm = new CanvasSizeForm()) + using (CanvasSizeForm canvasSizeForm = new CanvasSizeForm(Padding.Empty, Options.EditorCanvasColor)) { if (canvasSizeForm.ShowDialog(Form) == DialogResult.OK) { Padding canvas = canvasSizeForm.Canvas; - Bitmap bmp = ImageHelpers.AddCanvas(Form.Canvas, canvas, Options.EditorCanvasColor); + Color canvasColor = canvasSizeForm.CanvasColor; + Bitmap bmp = ImageHelpers.AddCanvas(Form.Canvas, canvas, canvasColor); if (bmp != null) {