From 27f790d862bc769f6ed941a56e1007e48d51b79a Mon Sep 17 00:00:00 2001 From: L1Q <0xL1Q@ex.ua> Date: Thu, 9 Nov 2017 05:00:27 +0200 Subject: [PATCH] Fix AutomaticPan --- .../Forms/RegionCaptureForm.cs | 21 ++++++++++--------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/ShareX.ScreenCaptureLib/Forms/RegionCaptureForm.cs b/ShareX.ScreenCaptureLib/Forms/RegionCaptureForm.cs index bcdf01cbb..4a4719376 100644 --- a/ShareX.ScreenCaptureLib/Forms/RegionCaptureForm.cs +++ b/ShareX.ScreenCaptureLib/Forms/RegionCaptureForm.cs @@ -78,7 +78,7 @@ public Color CurrentColor public SimpleWindowInfo SelectedWindow { get; private set; } - public Vector2 CanvasCenterPoint { get; set; } = new Vector2(0.5f, 0.5f); + public Vector2 CanvasCenterOffset { get; set; } = new Vector2(0f, 0f); internal ShapeManager ShapeManager { get; private set; } internal List DrawableObjects { get; private set; } @@ -372,12 +372,12 @@ private void Pan(Point delta) Pan(delta.X, delta.Y); } - private void AutomaticPan(Vector2 center) + private void AutomaticPan(Vector2 centerOffset) { if (IsEditorMode) { - int x = (int)Math.Round(ClientArea.Width * center.X); - int y = (int)Math.Round(ToolbarHeight + (ClientArea.Height - ToolbarHeight) * center.Y); + int x = (int)Math.Round(ClientArea.Width * 0.5f + centerOffset.X); + int y = (int)Math.Round(ToolbarHeight + (ClientArea.Height - ToolbarHeight) * 0.5f + centerOffset.Y); int newX = x - CanvasRectangle.Width / 2; int newY = y - CanvasRectangle.Height / 2; int deltaX = newX - CanvasRectangle.X; @@ -388,18 +388,19 @@ private void AutomaticPan(Vector2 center) private void AutomaticPan() { - AutomaticPan(CanvasCenterPoint); + AutomaticPan(CanvasCenterOffset); } - private void UpdateCenterPoint() + private void UpdateCenterOffset() { - CanvasCenterPoint = new Vector2((CanvasRectangle.X + CanvasRectangle.Width / 2f) / ClientArea.Width, - (CanvasRectangle.Y + CanvasRectangle.Height / 2f) / ClientArea.Height); + CanvasCenterOffset = new Vector2( + (CanvasRectangle.X + CanvasRectangle.Width / 2f) - ClientArea.Width / 2f, + (CanvasRectangle.Y + CanvasRectangle.Height / 2f) - ClientArea.Height / 2f); } public void CenterCanvas() { - CanvasCenterPoint = new Vector2(0.5f, 0.5f); + CanvasCenterOffset = new Vector2(0f, 0f); AutomaticPan(); } @@ -621,7 +622,7 @@ private new void Update() if (ShapeManager.IsPanning) { Pan(InputManager.MouseVelocity); - UpdateCenterPoint(); + UpdateCenterOffset(); } borderDotPen.DashOffset = (float)timerStart.Elapsed.TotalSeconds * -15;