protected virtual void OnMouseMove(object sender, MouseEventArgs e)
        {
            if (_clickedPoint == null)
            {
                return;
            }
            var p = _transformation.ConvertToIm((Size)e.Location);

            Transformation = _transformation.SetTranslate(_clickedPoint.Value - p);
            Invalidate();
        }
        /// <summary>
        /// 修正大小,防止太大或者太小
        /// </summary>
        /// <param name="value"></param>
        /// <returns></returns>
        private ProTransformation FixTranslation(ProTransformation value)
        {
            double maxScale = CalcFitScale(); //最大缩小到跟边框一样大小

            if (value.Scale > maxScale)
            {
                value = value.SetScale(maxScale);
            }
            if (value.Scale < 0.3)
            {
                value = value.SetScale(0.3);
            }
            var rectSize = value.ConvertToIm(ClientRectangle.Size);
            var max      = new Size(Image.Width - rectSize.Width, Image.Height - rectSize.Height);

            value = value.SetTranslate((new Point(Math.Min(value.Translation.X, max.Width), Math.Min(value.Translation.Y, max.Height))));
            if (value.Translation.X < 0 || value.Translation.Y < 0)
            {
                value = value.SetTranslate(new Point(Math.Max(value.Translation.X, 0), Math.Max(value.Translation.Y, 0)));
            }
            return(value);
        }