From 5b927ee30c3d14d08a8ddade3035b5953c8c4788 Mon Sep 17 00:00:00 2001 From: RedMser Date: Tue, 20 Feb 2018 19:21:45 +0100 Subject: [PATCH] Added Size and SizeMode properties to the image watermark. --- ShareX.ImageEffectsLib/Drawings/DrawImage.cs | 26 ++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/ShareX.ImageEffectsLib/Drawings/DrawImage.cs b/ShareX.ImageEffectsLib/Drawings/DrawImage.cs index 838e8d9fc..8d9628fe9 100644 --- a/ShareX.ImageEffectsLib/Drawings/DrawImage.cs +++ b/ShareX.ImageEffectsLib/Drawings/DrawImage.cs @@ -28,6 +28,7 @@ You should have received a copy of the GNU General Public License using System.Drawing; using System.Drawing.Design; using System.IO; +using System.Windows.Forms; namespace ShareX.ImageEffectsLib { @@ -58,6 +59,13 @@ public Point Offset [DefaultValue(""), Editor(typeof(ImageFileNameEditor), typeof(UITypeEditor))] public string ImageLocation { get; set; } + //TODO: Is a custom enum for different watermark image sizes a better idea? + [DefaultValue(SizeType.AutoSize)] + public SizeType SizeMode { get; set; } + + [DefaultValue(typeof(Size), "0, 0")] + public Size Size { get; set; } + public DrawImage() { this.ApplyDefaultPropertyValues(); @@ -69,8 +77,22 @@ public override Image Apply(Image img) { using (Image img2 = ImageHelpers.LoadImage(ImageLocation)) { - Point imagePosition = Helpers.GetPosition(Placement, Offset, img.Size, img2.Size); - Rectangle imageRectangle = new Rectangle(imagePosition, img2.Size); + //Calculate size first + Size imageSize = img2.Size; + if (SizeMode == SizeType.Absolute) + { + //Use Size property + imageSize = Size; + } + else if (SizeMode == SizeType.Percent) + { + //Relative size + imageSize = new Size((int)(img2.Width * (Size.Width / 100.0)), (int)(img2.Height * (Size.Height / 100.0))); + } + + //Place the image + Point imagePosition = Helpers.GetPosition(Placement, Offset, img.Size, imageSize); + Rectangle imageRectangle = new Rectangle(imagePosition, imageSize); if (AutoHide && !new Rectangle(0, 0, img.Width, img.Height).Contains(imageRectangle)) {