Added Opacity option to "Image" effect

This commit is contained in:
Jaex 2020-08-29 02:46:41 +03:00
parent eabb0c8b23
commit 6b0fa4cdf6

View file

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