如何使用两个PointF创建一个RectangleF?

我创建了两个点,就像一条线。 我想将其转换为矩形。 我该怎么办?

例如,这是我画线的方式。 但我希望它是一个Rectangle

  private PointF start, end; protected override void OnMouseDown(MouseEventArgs e) { start.X = eX; start.Y = eY; } protected override void OnMouseUp(MouseEventArgs e) { end.X = eX; end.Y = eY; Invalidate(); } 

怎么样:

 new RectangleF(Math.Min(start.X, end.X), Math.Min(start.Y, end.Y), Math.Abs(start.X - end.X), Math.Abs(start.Y - end.Y)); 

基本上,这确保您确实将左上角显示为“开始”,即使用户已经从左下角到右上角创建了一条线。

使用FromLTRB更简洁的Jon的答案:

  ///  /// Creates a rectangle based on two points. ///  /// Point 1 /// Point 2 /// Rectangle public static RectangleF GetRectangle(PointF p1, PointF p2) { float top = Math.Min(p1.Y, p2.Y); float bottom = Math.Max(p1.Y, p2.Y); float left = Math.Min(p1.X, p2.X); float right = Math.Max(p1.X, p2.X); RectangleF rect = RectangleF.FromLTRB(left, top, right, bottom); return rect; }