public virtual void HandlePointerEvent(IPointerEvent evnt) { double scale = 1.0 / Zoom; IPointerEvent subEvnt = new PointerEventAdapter(evnt, (int)(0.5 + (evnt.RawX - Canvas.RawWidth / 2.0) * scale + CenterX), (int)(0.5 + (evnt.RawY - Canvas.RawHeight / 2.0) * scale + CenterY)); IGesture gest = gesture; if (gest != null) { switch (evnt.Type) { case PointerEventType.GestureStart: gest.GestureStart(subEvnt); break; case PointerEventType.GestureMove: gest.GestureMove(subEvnt); break; case PointerEventType.GestureEnd: gest.GestureComplete(subEvnt); break; } } }