public void TouchMoved(int touchId, PointF p, ITouchProperties prop)
 {
     if (Touches.ContainsKey(touchId))
     {
         Touch curTouch = Touches[touchId].Touch;
         curTouch.SetNewTouchPoint(p);
         curTouch.Properties = prop;
         curTouch.SetMoving();
     }
 }
        /// <summary>
        /// Updates a touch position.  Does not change the object the touch is related to by doing a hittest.
        /// </summary>
        /// <remarks>
        /// Touch is fixed to one element when added, and should never change.  This
        /// gives the best responsiveness for resizing and rotating, as the fingers move outside of the
        /// element area.
        /// </remarks>
        /// <param name="touchId">Unique ID for the touch.</param>
        /// <param name="touchPoint">The coordinates of the touch in screen space.</param>
        /// <param name="props">Extended properties of the touch.</param>
        protected void TouchUpdated(int touchId, PointF touchPoint, ITouchProperties props)
        {
            CheckConfigured();

            // Potential to be called from another thread, so need to lock
            lock (syncRoot)
            {
                Assigner.TouchMoved(touchId, touchPoint, props);

                if (AllTouches.ContainsKey(touchId))
                {
                    AllTouches[touchId].TouchPoint = touchPoint;
                }
            }
        }