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