From 7a47b4f6ff50d837a678f2190287b1b4c28747c4 Mon Sep 17 00:00:00 2001 From: Robin Krom Date: Sat, 19 Feb 2022 01:08:50 +0100 Subject: [PATCH] Added logic to fit any images being placed on the canvas, this is not perfect yet. --- src/Greenshot.Editor/Drawing/Surface.cs | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/src/Greenshot.Editor/Drawing/Surface.cs b/src/Greenshot.Editor/Drawing/Surface.cs index 049748cd1..7c27c8ce1 100644 --- a/src/Greenshot.Editor/Drawing/Surface.cs +++ b/src/Greenshot.Editor/Drawing/Surface.cs @@ -910,6 +910,27 @@ namespace Greenshot.Editor.Drawing } } + /// + /// This will help to fit the container to the surface + /// + /// IDrawableContainer + private void FitContainer(IDrawableContainer drawableContainer) + { + double factor = 1; + if (drawableContainer.Width > this.Width) + { + factor = drawableContainer.Width / (double)Width; + } + if (drawableContainer.Height > this.Height) + { + var otherFactor = drawableContainer.Height / (double)Height; + factor = Math.Max(factor, otherFactor); + } + + drawableContainer.Width = (int)(drawableContainer.Width / factor); + drawableContainer.Height = (int)(drawableContainer.Height / factor); + } + /// /// Handle the drag/drop /// @@ -929,6 +950,7 @@ namespace Greenshot.Editor.Drawing { drawableContainer.Left = Location.X; drawableContainer.Top = Location.Y; + FitContainer(drawableContainer); AddElement(drawableContainer); return; } @@ -939,6 +961,7 @@ namespace Greenshot.Editor.Drawing { drawableContainer.Left = mouse.X; drawableContainer.Top = mouse.Y; + FitContainer(drawableContainer); AddElement(drawableContainer); mouse.Offset(10, 10); }