我正在使用此代码创建一个矩形:
public static Rectangle RectangleFromPoints(Point a, Point b)
{
return new Rectangle(Math.Min(a.X, b.X),
Math.Min(a.Y, b.Y),
Math.Abs(a.X - b.X),
Math.Abs(a.Y - b.Y));
}
我的问题是当我画一条水平线或垂直线然后尝试将它移动到 aY 时,因为一个长负数并引发溢出异常错误。
编辑
public override void Translate(Size s)
{
var oldBounds = this.ExpandedBounds;
_startLocator.Translate(s);
_endLocator.Translate(s);
Notify();
_canvas.Repaint(System.Drawing.Rectangle.Union(oldBounds, this.ExpandedBounds));
这是移动线的代码。这是 ExpandedBounds:
public Rectangle ExpandedBounds
{
get
{
var rect = this.Bounds;
rect.Inflate((LocatorHandle.WIDTH / 2) + 1, (LocatorHandle.HEIGHT / 2) + 1);
return rect;
}
}