Added canvas color button to canvas size form

This commit is contained in:
Jaex 2022-01-23 12:14:53 +03:00
parent 19aa3ea9ae
commit bcaca6a0ad
6 changed files with 76 additions and 30 deletions

View file

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

View file

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

View file

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

View file

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

View file

@ -142,7 +142,7 @@
<value>$this</value>
</data>
<data name="&gt;&gt;nudLeft.ZOrder" xml:space="preserve">
<value>9</value>
<value>10</value>
</data>
<data name="lblLeft.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
@ -169,7 +169,7 @@
<value>$this</value>
</data>
<data name="&gt;&gt;lblLeft.ZOrder" xml:space="preserve">
<value>8</value>
<value>9</value>
</data>
<data name="lblRight.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
@ -196,7 +196,7 @@
<value>$this</value>
</data>
<data name="&gt;&gt;lblRight.ZOrder" xml:space="preserve">
<value>6</value>
<value>7</value>
</data>
<data name="nudRight.Location" type="System.Drawing.Point, System.Drawing">
<value>160, 80</value>
@ -220,7 +220,7 @@
<value>$this</value>
</data>
<data name="&gt;&gt;nudRight.ZOrder" xml:space="preserve">
<value>7</value>
<value>8</value>
</data>
<data name="lblTop.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
@ -247,7 +247,7 @@
<value>$this</value>
</data>
<data name="&gt;&gt;lblTop.ZOrder" xml:space="preserve">
<value>4</value>
<value>5</value>
</data>
<data name="nudTop.Location" type="System.Drawing.Point, System.Drawing">
<value>88, 24</value>
@ -271,7 +271,7 @@
<value>$this</value>
</data>
<data name="&gt;&gt;nudTop.ZOrder" xml:space="preserve">
<value>5</value>
<value>6</value>
</data>
<data name="lblBottom.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
@ -298,7 +298,7 @@
<value>$this</value>
</data>
<data name="&gt;&gt;lblBottom.ZOrder" xml:space="preserve">
<value>2</value>
<value>3</value>
</data>
<data name="nudBottom.Location" type="System.Drawing.Point, System.Drawing">
<value>88, 136</value>
@ -322,16 +322,16 @@
<value>$this</value>
</data>
<data name="&gt;&gt;nudBottom.ZOrder" xml:space="preserve">
<value>3</value>
<value>4</value>
</data>
<data name="btnOK.Location" type="System.Drawing.Point, System.Drawing">
<value>8, 176</value>
<value>8, 200</value>
</data>
<data name="btnOK.Size" type="System.Drawing.Size, System.Drawing">
<value>108, 24</value>
</data>
<data name="btnOK.TabIndex" type="System.Int32, mscorlib">
<value>8</value>
<value>9</value>
</data>
<data name="btnOK.Text" xml:space="preserve">
<value>OK</value>
@ -346,16 +346,16 @@
<value>$this</value>
</data>
<data name="&gt;&gt;btnOK.ZOrder" xml:space="preserve">
<value>1</value>
<value>2</value>
</data>
<data name="btnCancel.Location" type="System.Drawing.Point, System.Drawing">
<value>124, 176</value>
<value>124, 200</value>
</data>
<data name="btnCancel.Size" type="System.Drawing.Size, System.Drawing">
<value>108, 24</value>
</data>
<data name="btnCancel.TabIndex" type="System.Int32, mscorlib">
<value>9</value>
<value>10</value>
</data>
<data name="btnCancel.Text" xml:space="preserve">
<value>Cancel</value>
@ -370,6 +370,33 @@
<value>$this</value>
</data>
<data name="&gt;&gt;btnCancel.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="cbtnCanvasColor.Location" type="System.Drawing.Point, System.Drawing">
<value>8, 168</value>
</data>
<data name="cbtnCanvasColor.Size" type="System.Drawing.Size, System.Drawing">
<value>144, 23</value>
</data>
<data name="cbtnCanvasColor.TabIndex" type="System.Int32, mscorlib">
<value>8</value>
</data>
<data name="cbtnCanvasColor.Text" xml:space="preserve">
<value>Canvas color...</value>
</data>
<data name="cbtnCanvasColor.TextAlign" type="System.Drawing.ContentAlignment, System.Drawing">
<value>MiddleLeft</value>
</data>
<data name="&gt;&gt;cbtnCanvasColor.Name" xml:space="preserve">
<value>cbtnCanvasColor</value>
</data>
<data name="&gt;&gt;cbtnCanvasColor.Type" xml:space="preserve">
<value>ShareX.HelpersLib.ColorButton, ShareX.HelpersLib, Version=13.7.1.0, Culture=neutral, PublicKeyToken=null</value>
</data>
<data name="&gt;&gt;cbtnCanvasColor.Parent" xml:space="preserve">
<value>$this</value>
</data>
<data name="&gt;&gt;cbtnCanvasColor.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
@ -379,7 +406,7 @@
<value>6, 13</value>
</data>
<data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
<value>240, 208</value>
<value>240, 232</value>
</data>
<data name="$this.StartPosition" type="System.Windows.Forms.FormStartPosition, System.Windows.Forms">
<value>CenterScreen</value>

View file

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