From c996061d2ec13c44911c876754847191c5e22462 Mon Sep 17 00:00:00 2001 From: Jaex Date: Wed, 17 May 2023 20:05:16 +0300 Subject: [PATCH] Added "Center" option to "DrawBackgroundImage" image effect --- ShareX.HelpersLib/Helpers/ImageHelpers.cs | 20 ++++++++++++------- .../Drawings/DrawBackgroundImage.cs | 5 ++++- ShareX.MediaLib/ImageBeautifierOptions.cs | 4 ++-- 3 files changed, 19 insertions(+), 10 deletions(-) diff --git a/ShareX.HelpersLib/Helpers/ImageHelpers.cs b/ShareX.HelpersLib/Helpers/ImageHelpers.cs index 24035121a..ab55c1cbe 100644 --- a/ShareX.HelpersLib/Helpers/ImageHelpers.cs +++ b/ShareX.HelpersLib/Helpers/ImageHelpers.cs @@ -506,9 +506,9 @@ public static Bitmap AddCanvas(Image img, Padding margin, Color canvasColor) return bmp; } - public static Bitmap AddBackgroundImage(Bitmap bmp, Bitmap backgroundImage) + public static Bitmap DrawBackgroundImage(Bitmap bmp, Bitmap backgroundImage, bool center = true) { - if (backgroundImage != null) + if (bmp != null && backgroundImage != null) { using (bmp) using (backgroundImage) @@ -526,15 +526,21 @@ public static Bitmap AddBackgroundImage(Bitmap bmp, Bitmap backgroundImage) width = (int)(height * aspectRatio); } - int centerX = (bmpResult.Width - width) / 2; - int centerY = (bmpResult.Height - height) / 2; + int x = 0; + int y = 0; + + if (center) + { + x = (bmpResult.Width - width) / 2; + y = (bmpResult.Height - height) / 2; + } using (Graphics g = Graphics.FromImage(bmpResult)) { g.SetHighQuality(); g.PixelOffsetMode = PixelOffsetMode.Half; - g.DrawImage(backgroundImage, centerX, centerY, width, height); + g.DrawImage(backgroundImage, x, y, width, height); g.DrawImage(bmp, 0, 0, bmp.Width, bmp.Height); } @@ -545,10 +551,10 @@ public static Bitmap AddBackgroundImage(Bitmap bmp, Bitmap backgroundImage) return bmp; } - public static Bitmap AddBackgroundImage(Bitmap bmp, string backgroundImageFilePath) + public static Bitmap DrawBackgroundImage(Bitmap bmp, string backgroundImageFilePath, bool center = true) { Bitmap backgroundImage = LoadImage(backgroundImageFilePath); - return AddBackgroundImage(bmp, backgroundImage); + return DrawBackgroundImage(bmp, backgroundImage, center); } public static Bitmap RoundedCorners(Bitmap bmp, int cornerRadius) diff --git a/ShareX.ImageEffectsLib/Drawings/DrawBackgroundImage.cs b/ShareX.ImageEffectsLib/Drawings/DrawBackgroundImage.cs index 10a653894..1c083e74c 100644 --- a/ShareX.ImageEffectsLib/Drawings/DrawBackgroundImage.cs +++ b/ShareX.ImageEffectsLib/Drawings/DrawBackgroundImage.cs @@ -36,6 +36,9 @@ public class DrawBackgroundImage : ImageEffect [DefaultValue(""), Editor(typeof(ImageFileNameEditor), typeof(UITypeEditor))] public string ImageFilePath { get; set; } + [DefaultValue(true)] + public bool Center { get; set; } + public DrawBackgroundImage() { this.ApplyDefaultPropertyValues(); @@ -43,7 +46,7 @@ public DrawBackgroundImage() public override Bitmap Apply(Bitmap bmp) { - return ImageHelpers.AddBackgroundImage(bmp, ImageFilePath); + return ImageHelpers.DrawBackgroundImage(bmp, ImageFilePath, Center); } } } \ No newline at end of file diff --git a/ShareX.MediaLib/ImageBeautifierOptions.cs b/ShareX.MediaLib/ImageBeautifierOptions.cs index 3a0b0674a..08de9e7f4 100644 --- a/ShareX.MediaLib/ImageBeautifierOptions.cs +++ b/ShareX.MediaLib/ImageBeautifierOptions.cs @@ -95,11 +95,11 @@ public Bitmap Render(Bitmap image) } break; case ImageBeautifierBackgroundType.Image: - resultImage = ImageHelpers.AddBackgroundImage(resultImage, BackgroundImageFilePath); + resultImage = ImageHelpers.DrawBackgroundImage(resultImage, BackgroundImageFilePath); break; case ImageBeautifierBackgroundType.Desktop: string desktopWallpaperFilePath = Helpers.GetDesktopWallpaperFilePath(); - resultImage = ImageHelpers.AddBackgroundImage(resultImage, desktopWallpaperFilePath); + resultImage = ImageHelpers.DrawBackgroundImage(resultImage, desktopWallpaperFilePath); break; default: case ImageBeautifierBackgroundType.Transparent: