/// <summary>
        /// Occurs when a touch delta event is handled.
        /// </summary>
        /// <param name="e">The <see cref="OxyPlot.OxyTouchEventArgs" /> instance containing the event data.</param>
        public override void Delta(OxyTouchEventArgs e)
        {
            base.Delta(e);

            if (!this.IsPanEnabled && !this.IsZoomEnabled)
            {
                return;
            }

            var newPosition      = e.Position;
            var previousPosition = newPosition - e.DeltaTranslation;

            var ignorePan = IsOnlyAcceptAxisPan && this.XAxis != null && this.YAxis != null;

            if (!ignorePan && IsPanByTowFinger && e is XamarinOxyTouchEventArgs e2)
            {
                ignorePan = e2.PointerCount == 1;
            }

            if (!ignorePan)
            {
                XAxis?.Pan(previousPosition, newPosition);

                YAxis?.Pan(previousPosition, newPosition);
            }

            var current = this.InverseTransform(newPosition.X, newPosition.Y);

            XAxis?.ZoomAt(e.DeltaScale.X, current.X);
            YAxis?.ZoomAt(e.DeltaScale.Y, current.Y);

            this.PlotView.InvalidatePlot(false);
            e.Handled = true;
        }
Ejemplo n.º 2
0
        private void OnMouseMove(object sender, MouseEventArgs e)
        {
            if (!IsPanning)
            {
                return;
            }

            if (IsInputValid(e.MouseDevice))
            {
                var position = e.GetPosition(AssociatedObject);
                if (HasXModifiers())
                {
                    XAxis?.Pan(previousPosition, position);
                }
                if (HasYModifiers())
                {
                    YAxis?.Pan(previousPosition, position);
                }
                previousPosition = position;
                DrawingView?.InvalidateDrawing();
                e.Handled = true;
            }
            else
            {
                if (ReferenceEquals(e.MouseDevice.Captured, AssociatedObject))
                {
                    AssociatedObject.ReleaseMouseCapture();
                }
                IsPanning = false;
            }
        }