Esempio n. 1
0
        private void Scroll(Point position)
        {
            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);

            if (Orientation == Orientation.Horizontal)
            {
                form.CanvasCenterOffset = new Vector2(centerOffsetNew, form.CanvasCenterOffset.Y);
            }
            else
            {
                form.CanvasCenterOffset = new Vector2(form.CanvasCenterOffset.X, centerOffsetNew);
            }

            form.AutomaticPan();
        }