From 3dfac10e822829819ed979db177153ce24de2bdf Mon Sep 17 00:00:00 2001 From: Jaex Date: Sun, 15 Sep 2019 10:51:05 +0300 Subject: [PATCH] Added multi color gradient support to background image effect --- ShareX.HelpersLib/Helpers/ImageHelpers.cs | 8 +++++ .../Drawings/DrawBackground.cs | 29 +++++++++++++++++-- 2 files changed, 34 insertions(+), 3 deletions(-) diff --git a/ShareX.HelpersLib/Helpers/ImageHelpers.cs b/ShareX.HelpersLib/Helpers/ImageHelpers.cs index 3b7e0faf4..56c9e2394 100644 --- a/ShareX.HelpersLib/Helpers/ImageHelpers.cs +++ b/ShareX.HelpersLib/Helpers/ImageHelpers.cs @@ -700,6 +700,14 @@ public static Bitmap FillBackground(Image img, Color fromColor, Color toColor, L } } + public static Bitmap FillBackground(Image img, GradientInfo gradientInfo) + { + using (LinearGradientBrush brush = gradientInfo.GetGradientBrush(new Rectangle(0, 0, img.Width, img.Height))) + { + return FillBackground(img, brush); + } + } + public static Bitmap FillBackground(Image img, Brush brush) { Bitmap result = img.CreateEmptyBitmap(); diff --git a/ShareX.ImageEffectsLib/Drawings/DrawBackground.cs b/ShareX.ImageEffectsLib/Drawings/DrawBackground.cs index 023d672f5..0307abe37 100644 --- a/ShareX.ImageEffectsLib/Drawings/DrawBackground.cs +++ b/ShareX.ImageEffectsLib/Drawings/DrawBackground.cs @@ -40,22 +40,45 @@ public class DrawBackground : ImageEffect [DefaultValue(false)] public bool UseGradient { get; set; } + [DefaultValue(LinearGradientMode.Vertical)] + public LinearGradientMode GradientType { get; set; } + [DefaultValue(typeof(Color), "White"), Editor(typeof(MyColorEditor), typeof(UITypeEditor)), TypeConverter(typeof(MyColorConverter))] public Color Color2 { get; set; } - [DefaultValue(LinearGradientMode.Vertical)] - public LinearGradientMode GradientType { get; set; } + [DefaultValue(false)] + public bool UseCustomGradient { get; set; } + + [Editor(typeof(GradientEditor), typeof(UITypeEditor))] + public GradientInfo Gradient { get; set; } public DrawBackground() { this.ApplyDefaultPropertyValues(); + AddDefaultGradient(); + } + + private void AddDefaultGradient() + { + Gradient = new GradientInfo(); + Gradient.Colors.Add(new GradientStop(Color.FromArgb(68, 120, 194), 0f)); + Gradient.Colors.Add(new GradientStop(Color.FromArgb(13, 58, 122), 50f)); + Gradient.Colors.Add(new GradientStop(Color.FromArgb(6, 36, 78), 50f)); + Gradient.Colors.Add(new GradientStop(Color.FromArgb(23, 89, 174), 100f)); } public override Image Apply(Image img) { if (UseGradient) { - return ImageHelpers.FillBackground(img, Color, Color2, GradientType); + if (UseCustomGradient && Gradient != null && Gradient.IsValid) + { + return ImageHelpers.FillBackground(img, Gradient); + } + else + { + return ImageHelpers.FillBackground(img, Color, Color2, GradientType); + } } return ImageHelpers.FillBackground(img, Color);