Add OnMouseDown interaction to scrollbars

This commit is contained in:
L1Q 2018-04-04 14:51:32 +03:00
parent 935492e008
commit 276a3a504f
2 changed files with 28 additions and 2 deletions

View file

@ -426,7 +426,7 @@ private void AutomaticPan(Vector2 centerOffset)
}
}
private void AutomaticPan()
public void AutomaticPan()
{
AutomaticPan(CanvasCenterOffset);
}

View file

@ -161,7 +161,33 @@ public override void OnMouseDown(Point position)
{
base.OnMouseDown(position);
// Pan here
int inMousePosition, inClientAreaSize, inImageSize;
if (Orientation == Orientation.Horizontal)
{
inMousePosition = position.X;
inClientAreaSize = form.ClientArea.Width;
inImageSize = form.CanvasRectangle.Width;
}
else
{
inMousePosition = position.Y;
inClientAreaSize = form.ClientArea.Height;
inImageSize = form.CanvasRectangle.Height;
}
int mousePositionLocal = inMousePosition - Margin - Padding;
int trackLength = inClientAreaSize - Margin * 2 - Padding * 2 - Thickness;
int trackLengthInternal = trackLength - Padding * 2;
int centerOffsetNew = (int)((trackLengthInternal / 2.0f - mousePositionLocal) / trackLengthInternal * inImageSize);
form.CanvasCenterOffset = Orientation == Orientation.Horizontal
? new Vector2(centerOffsetNew, form.CanvasCenterOffset.Y)
: new Vector2(form.CanvasCenterOffset.X, centerOffsetNew);
form.AutomaticPan();
}
}
}