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); }