Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- private void PinchGesturePinchUpdated(object sender, PinchGestureUpdatedEventArgs e)
- {
- if(e.Status == GestureStatus.Started)
- {
- AmbientControl = AmbientControl.Zoom;
- StartCanvasScale = CanvasScale;
- }
- else if(e.Status == GestureStatus.Running)
- {
- var factor = (e.Scale - 1);
- var delta = factor < 0 ? -1 : 1;
- factor = (factor * delta).Clamp(0, MaximumZoomStep) * delta;
- CanvasScale += ((factor * StartCanvasScale)).ToSingle();
- CanvasScale = CanvasScale.Clamp(0.01f, 2);
- if(delta > 0)
- {
- var touchX = (WidthScreen * e.ScaleOrigin.X).ToSingle();
- var touchY = (HeightScreen * e.ScaleOrigin.Y).ToSingle();
- var centerXScreen = WidthScreen / 2;
- var centerYScreen = HeightScreen / 2;
- CanvasPosition.X += (centerXScreen - touchX) * CanvasScale;
- CanvasPosition.Y += (centerYScreen - touchY) * CanvasScale;
- }
- else
- {
- var centerXScreen = (WidthScreen / 2);
- var centerYScreen = (HeightScreen / 2);
- var newCenterXScreen = (WidthScreen * ((factor * StartCanvasScale))) / 2;
- var newCenterYScreen = (HeightScreen * ((factor * StartCanvasScale))) / 2;
- CanvasPosition.X += (newCenterXScreen - centerXScreen).ToSingle();
- CanvasPosition.Y += (newCenterYScreen - centerYScreen).ToSingle();
- }
- CanvasView.InvalidateSurface();
- StartCanvasScale = CanvasScale;
- }
- else
- {
- AmbientControl = AmbientControl.Stoped;
- }
- }
Add Comment
Please, Sign In to add comment