void OnZoomCompleted(object sender, C1ZoomCompletedEventArgs e) { var maxZoom = Math.Min(ActualWidth / Rectangle.ActualWidth, ActualHeight / Rectangle.ActualHeight) / 2; var newZoom = Math.Min(maxZoom, _initialZoom * e.UniformCumulativeScale); var maxX = FramePanel.ActualWidth - Rectangle.ActualWidth * newZoom; var maxY = FramePanel.ActualHeight - Rectangle.ActualHeight * newZoom; double newX, newY; Zoom(maxZoom, _initialZoom, _initialPosition, _relativePosition, newZoom, out newX, out newY); Clip(maxX, maxY, ref newX, ref newY); SetZoom(newZoom, newX, newY, true); }
void OnZoomCompleted(object sender, C1ZoomCompletedEventArgs e) { var maxZoom = Math.Min(FramePanel.GetActualWidth() / Rectangle.GetActualWidth(), FramePanel.GetActualHeight() / Rectangle.GetActualHeight()) / 2; var newZoom = Math.Min(maxZoom, _initialZoom * e.UniformCumulativeScale); var maxX = FramePanel.GetActualWidth() - Rectangle.GetActualWidth() * newZoom; var maxY = FramePanel.GetActualHeight() - Rectangle.GetActualHeight() * newZoom; double newX, newY; Zoom(maxZoom, _initialZoom, _initialPosition, _relativePosition, newZoom, out newX, out newY); newX = newX + e.CumulativeTranslation.X; newY = newY + e.CumulativeTranslation.Y; Clip(maxX, maxY, ref newX, ref newY); SetZoom(newZoom, newX, newY, true); Rectangle.BorderBrush = new SolidColorBrush(Colors.Transparent); }