Guest User

Untitled

a guest
May 28th, 2018
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.90 KB | None | 0 0
  1. private void PinchGesturePinchUpdated(object sender, PinchGestureUpdatedEventArgs e)
  2. {
  3. if(e.Status == GestureStatus.Started)
  4. {
  5. AmbientControl = AmbientControl.Zoom;
  6. StartCanvasScale = CanvasScale;
  7. }
  8. else if(e.Status == GestureStatus.Running)
  9. {
  10. var factor = (e.Scale - 1);
  11. var delta = factor < 0 ? -1 : 1;
  12.  
  13. factor = (factor * delta).Clamp(0, MaximumZoomStep) * delta;
  14.  
  15. CanvasScale += ((factor * StartCanvasScale)).ToSingle();
  16. CanvasScale = CanvasScale.Clamp(0.01f, 2);
  17.  
  18. if(delta > 0)
  19. {
  20. var touchX = (WidthScreen * e.ScaleOrigin.X).ToSingle();
  21. var touchY = (HeightScreen * e.ScaleOrigin.Y).ToSingle();
  22. var centerXScreen = WidthScreen / 2;
  23. var centerYScreen = HeightScreen / 2;
  24.  
  25. CanvasPosition.X += (centerXScreen - touchX) * CanvasScale;
  26. CanvasPosition.Y += (centerYScreen - touchY) * CanvasScale;
  27. }
  28. else
  29. {
  30. var centerXScreen = (WidthScreen / 2);
  31. var centerYScreen = (HeightScreen / 2);
  32.  
  33. var newCenterXScreen = (WidthScreen * ((factor * StartCanvasScale))) / 2;
  34. var newCenterYScreen = (HeightScreen * ((factor * StartCanvasScale))) / 2;
  35.  
  36. CanvasPosition.X += (newCenterXScreen - centerXScreen).ToSingle();
  37. CanvasPosition.Y += (newCenterYScreen - centerYScreen).ToSingle();
  38. }
  39.  
  40. CanvasView.InvalidateSurface();
  41. StartCanvasScale = CanvasScale;
  42. }
  43. else
  44. {
  45. AmbientControl = AmbientControl.Stoped;
  46. }
  47. }
Add Comment
Please, Sign In to add comment