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; } } }
private void GestureStart(IPointerEvent evnt, bool considerPoke) { IGesture newGesture = GetGesture(evnt, considerPoke); if (newGesture != null) { if (current != null) { current = null; evnt.RepaintCanvas(); } layoutCanvas.Gesture = newGesture; newGesture.GestureStart(evnt); } }