Added gradient live preview to ImageBeautifierForm

This commit is contained in:
Jaex 2023-06-07 03:07:44 +03:00
parent cdc9add75f
commit 8e08f28620
2 changed files with 26 additions and 4 deletions

View file

@ -32,6 +32,9 @@ namespace ShareX.HelpersLib
{
public partial class GradientPickerForm : Form
{
public delegate void GradientChangedEventHandler();
public event GradientChangedEventHandler GradientChanged;
public GradientInfo Gradient { get; private set; }
private bool isReady;
@ -48,6 +51,11 @@ public GradientPickerForm(GradientInfo gradient)
UpdateGradientList(true);
}
protected virtual void OnGradientChanged()
{
GradientChanged?.Invoke();
}
private void AddPresets()
{
GradientInfo[] gradients = new GradientInfo[]
@ -497,6 +505,8 @@ private void UpdatePreview()
Bitmap bmp = Gradient.CreateGradientPreview(pbPreview.ClientRectangle.Width, pbPreview.ClientRectangle.Height, true);
pbPreview.Image?.Dispose();
pbPreview.Image = bmp;
OnGradientChanged();
}
}

View file

@ -24,12 +24,12 @@
#endregion License Information (GPL v3)
using ShareX.HelpersLib;
using ShareX.MediaLib.Properties;
using System;
using System.Diagnostics;
using System.Drawing;
using System.Threading.Tasks;
using System.Windows.Forms;
using ShareX.MediaLib.Properties;
namespace ShareX.MediaLib
{
@ -269,15 +269,27 @@ private async void pbBackground_Click(object sender, EventArgs e)
switch (Options.BackgroundType)
{
case ImageBeautifierBackgroundType.Gradient:
using (GradientPickerForm gradientPickerForm = new GradientPickerForm(Options.BackgroundGradient.Copy()))
GradientInfo currentGradient = Options.BackgroundGradient;
using (GradientPickerForm gradientPickerForm = new GradientPickerForm(currentGradient.Copy()))
{
gradientPickerForm.GradientChanged += async () =>
{
Options.BackgroundGradient = gradientPickerForm.Gradient;
await UpdatePreview(true);
};
if (gradientPickerForm.ShowDialog() == DialogResult.OK)
{
Options.BackgroundGradient = gradientPickerForm.Gradient;
UpdateBackgroundPreview();
await UpdatePreview();
}
else
{
Options.BackgroundGradient = currentGradient;
}
await UpdatePreview();
}
break;
case ImageBeautifierBackgroundType.Color: