Added logic to fit any images being placed on the canvas, this is not perfect yet.

This commit is contained in:
Robin Krom 2022-02-19 01:08:50 +01:00
commit 7a47b4f6ff
No known key found for this signature in database
GPG key ID: BCC01364F1371490

View file

@ -910,6 +910,27 @@ namespace Greenshot.Editor.Drawing
} }
} }
/// <summary>
/// This will help to fit the container to the surface
/// </summary>
/// <param name="drawableContainer">IDrawableContainer</param>
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);
}
/// <summary> /// <summary>
/// Handle the drag/drop /// Handle the drag/drop
/// </summary> /// </summary>
@ -929,6 +950,7 @@ namespace Greenshot.Editor.Drawing
{ {
drawableContainer.Left = Location.X; drawableContainer.Left = Location.X;
drawableContainer.Top = Location.Y; drawableContainer.Top = Location.Y;
FitContainer(drawableContainer);
AddElement(drawableContainer); AddElement(drawableContainer);
return; return;
} }
@ -939,6 +961,7 @@ namespace Greenshot.Editor.Drawing
{ {
drawableContainer.Left = mouse.X; drawableContainer.Left = mouse.X;
drawableContainer.Top = mouse.Y; drawableContainer.Top = mouse.Y;
FitContainer(drawableContainer);
AddElement(drawableContainer); AddElement(drawableContainer);
mouse.Offset(10, 10); mouse.Offset(10, 10);
} }