public void UpdatePosition(Point mousePosition, double minX, double maxX)
        {
            Translate.X = MathUtility.Clamp(mousePosition.X - _CapturedLocalPosition.X, minX, maxX);
            Translate.Y = MathUtility.Clamp(mousePosition.Y - _CapturedLocalPosition.Y, ComputeOffset.Y, LimitedYPos);

            var v = GetControlValue(new Point(Translate.X, Translate.Y), ActualAreaSize, Delta);

            ControlValue.Value          = v.Value;
            ControlValue.NormalizedTime = v.NormalizedTime;

            RangeControlPoint.UpdateTime();

            InvalidateVisual();
        }
        public DefaultControlPoint(ControlValue value, float delta, float maxWidth, float maxHeight)
        {
            ControlValue = value;

            Delta          = delta;
            ActualAreaSize = new Size(maxWidth, maxHeight);

            var transformGroup = new TransformGroup();

            transformGroup.Children.Add(Translate);

            RenderTransform       = transformGroup;
            RenderTransformOrigin = new Point(0.5, 0.5);

            RangeControlPoint = new RangeControlPoint(this);

            Placement();
        }