From 6b0fa4cdf60280f4b830620b8362b802747c9ef8 Mon Sep 17 00:00:00 2001 From: Jaex Date: Sat, 29 Aug 2020 02:46:41 +0300 Subject: [PATCH] Added Opacity option to "Image" effect --- ShareX.ImageEffectsLib/Drawings/DrawImage.cs | 34 +++++++++++++++++--- 1 file changed, 30 insertions(+), 4 deletions(-) diff --git a/ShareX.ImageEffectsLib/Drawings/DrawImage.cs b/ShareX.ImageEffectsLib/Drawings/DrawImage.cs index d3cda2d6d..ef2bbb990 100644 --- a/ShareX.ImageEffectsLib/Drawings/DrawImage.cs +++ b/ShareX.ImageEffectsLib/Drawings/DrawImage.cs @@ -51,14 +51,29 @@ public class DrawImage : ImageEffect [DefaultValue(typeof(Size), "0, 0")] public Size Size { get; set; } + [DefaultValue(false), Description("If image watermark size bigger than source image then don't draw it.")] + public bool AutoHide { get; set; } + [DefaultValue(ImageInterpolationMode.HighQualityBicubic), TypeConverter(typeof(EnumProperNameConverter))] public ImageInterpolationMode InterpolationMode { get; set; } [DefaultValue(CompositingMode.SourceOver), TypeConverter(typeof(EnumProperNameConverter))] public CompositingMode CompositingMode { get; set; } - [DefaultValue(false), Description("If image watermark size bigger than source image then don't draw it.")] - public bool AutoHide { get; set; } + private int opacity; + + [DefaultValue(100)] + public int Opacity + { + get + { + return opacity; + } + set + { + opacity = value.Clamp(0, 100); + } + } public DrawImage() { @@ -67,7 +82,7 @@ public DrawImage() public override Bitmap Apply(Bitmap bmp) { - if (SizeMode != DrawImageSizeMode.DontResize && Size.Width <= 0 && Size.Height <= 0) + if (Opacity < 1 || (SizeMode != DrawImageSizeMode.DontResize && Size.Width <= 0 && Size.Height <= 0)) { return bmp; } @@ -116,7 +131,18 @@ public override Bitmap Apply(Bitmap bmp) g.InterpolationMode = ImageHelpers.GetInterpolationMode(InterpolationMode); g.PixelOffsetMode = PixelOffsetMode.Half; g.CompositingMode = CompositingMode; - g.DrawImage(bmpWatermark, imageRectangle); + + if (Opacity < 100) + { + using (Bitmap bmpWatermarkTransparent = ColorMatrixManager.Alpha(Opacity / 100f).Apply(bmpWatermark)) + { + g.DrawImage(bmpWatermarkTransparent, imageRectangle); + } + } + else + { + g.DrawImage(bmpWatermark, imageRectangle); + } } } }