/// <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; }
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; } }