diff --git a/ShareX.ImageEffectsLib/Drawings/DrawImage.cs b/ShareX.ImageEffectsLib/Drawings/DrawImage.cs index a134c6476..648da8a29 100644 --- a/ShareX.ImageEffectsLib/Drawings/DrawImage.cs +++ b/ShareX.ImageEffectsLib/Drawings/DrawImage.cs @@ -83,7 +83,7 @@ public DrawImage() public override Bitmap Apply(Bitmap bmp) { - if (Opacity < 1 || (SizeMode != DrawImageSizeMode.DontResize && Size.Width <= 0 && Size.Height <= 0)) + if (Opacity < 1) { return bmp; } @@ -98,7 +98,7 @@ public override Bitmap Apply(Bitmap bmp) { Size imageSize; - if (SizeMode == DrawImageSizeMode.AbsoluteSize) + if (SizeMode == DrawImageSizeMode.AbsoluteSize || SizeMode == DrawImageSizeMode.Tile) { int width = Size.Width == -1 ? bmp.Width : Size.Width; int height = Size.Height == -1 ? bmp.Height : Size.Height; @@ -135,18 +135,29 @@ public override Bitmap Apply(Bitmap bmp) g.PixelOffsetMode = PixelOffsetMode.Half; g.CompositingMode = CompositingMode; - if (Opacity < 100) + if (SizeMode == DrawImageSizeMode.Tile) { - using (ImageAttributes ia = new ImageAttributes()) + using (TextureBrush brush = new TextureBrush(bmpWatermark, WrapMode.Tile)) { - ColorMatrix matrix = ColorMatrixManager.Alpha(Opacity / 100f); - ia.SetColorMatrix(matrix, ColorMatrixFlag.Default, ColorAdjustType.Bitmap); - g.DrawImage(bmpWatermark, imageRectangle, 0, 0, bmpWatermark.Width, bmpWatermark.Height, GraphicsUnit.Pixel, ia); + brush.TranslateTransform(imageRectangle.X, imageRectangle.Y); + g.FillRectangle(brush, imageRectangle); } } else { - g.DrawImage(bmpWatermark, imageRectangle); + if (Opacity < 100) + { + using (ImageAttributes ia = new ImageAttributes()) + { + ColorMatrix matrix = ColorMatrixManager.Alpha(Opacity / 100f); + ia.SetColorMatrix(matrix, ColorMatrixFlag.Default, ColorAdjustType.Bitmap); + g.DrawImage(bmpWatermark, imageRectangle, 0, 0, bmpWatermark.Width, bmpWatermark.Height, GraphicsUnit.Pixel, ia); + } + } + else + { + g.DrawImage(bmpWatermark, imageRectangle); + } } } } diff --git a/ShareX.ImageEffectsLib/Enums.cs b/ShareX.ImageEffectsLib/Enums.cs index 1fe5cc1c2..b3469ccb4 100644 --- a/ShareX.ImageEffectsLib/Enums.cs +++ b/ShareX.ImageEffectsLib/Enums.cs @@ -48,6 +48,7 @@ public enum DrawImageSizeMode // Localized DontResize, AbsoluteSize, PercentageOfWatermark, - PercentageOfCanvas + PercentageOfCanvas, + Tile } } \ No newline at end of file