Mapsui.Viewport.Transform C# (CSharp) Метод

Transform() публичный Метод

public Transform ( double screenX, double screenY, double previousScreenX, double previousScreenY, double deltaScale = 1 ) : void
screenX double
screenY double
previousScreenX double
previousScreenY double
deltaScale double
Результат void
        public void Transform(double screenX, double screenY, double previousScreenX, double previousScreenY, double deltaScale = 1)
        {
            var previous = ScreenToWorld(previousScreenX, previousScreenY);
            var current = ScreenToWorld(screenX, screenY);

            var newX = Center.X + previous.X - current.X;
            var newY = Center.Y + previous.Y - current.Y;

            Resolution = Resolution / deltaScale;

            current = ScreenToWorld(screenX, screenY); // calculate current position again with adjusted resolution
            // Zooming should be centered on the place where the map is touched. This is done with the scale correction.
            var scaleCorrectionX = (1 - deltaScale) * (current.X - Center.X);
            var scaleCorrectionY = (1 - deltaScale) * (current.Y - Center.Y);

            Center.X = newX - scaleCorrectionX;
            Center.Y = newY - scaleCorrectionY;
            _modified = true;
        }

Usage Example

Пример #1
0
        public void Transform(MPoint position, MPoint previousPosition, double deltaResolution = 1, double deltaRotation = 0)
        {
            if (Map == null || Limiter == null)
            {
                return;
            }

            if (Map.ZoomLock)
            {
                deltaResolution = 1;
            }
            if (Map.PanLock)
            {
                position = previousPosition;
            }
            _viewport.Transform(position, previousPosition, deltaResolution, deltaRotation);
            Limiter.Limit(_viewport, Map.Resolutions, Map.Extent);
        }
All Usage Examples Of Mapsui.Viewport::Transform