You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Point数组转换为Rectangle并获取其宽高?

计算轴对齐矩形的宽高以创建RectangleF实例

从你给出的四个点来看,这是一个标准的轴对齐矩形(所有边平行于X/Y轴),所以计算宽高非常直观:

核心思路

  • 宽度(width):矩形右侧的X坐标减去左侧的X坐标。你的点里,p1和p4是左侧点(X=48.5),p2和p3是右侧点(X=997.5),所以直接用 p2.X - p1.X 就能得到宽度。
  • 高度(height):矩形下方的Y坐标减去上方的Y坐标。你的点里,p1和p2是上方点(Y=196.5),p3和p4是下方点(Y=692.5),所以用 p3.Y - p1.Y 就能得到高度。

直接对应你的代码

假设你已经定义好了四个PointF实例,代码可以这么写:

// 初始化你的四个点
PointF p1 = new PointF(48.5f, 196.5f);
PointF p2 = new PointF(997.5f, 196.5f);
PointF p3 = new PointF(997.5f, 692.5f);
PointF p4 = new PointF(48.5f, 692.5f);

// 计算宽高
float width = p2.X - p1.X;
float height = p3.Y - p1.Y;

// 创建目标RectangleF实例
RectangleF rec = new RectangleF(p1.X, p1.Y, width, height);

更通用的兼容方案(如果点顺序不固定)

如果以后遇到点的排列顺序不确定的情况(比如不是按左上→右上→右下→左下的顺序给出),可以通过找所有点的最小/最大坐标来计算,这样更稳妥:

// 找出所有点的极值坐标
float minX = Math.Min(Math.Min(p1.X, p2.X), Math.Min(p3.X, p4.X));
float maxX = Math.Max(Math.Max(p1.X, p2.X), Math.Max(p3.X, p4.X));
float minY = Math.Min(Math.Min(p1.Y, p2.Y), Math.Min(p3.Y, p4.Y));
float maxY = Math.Max(Math.Max(p1.Y, p2.Y), Math.Max(p3.Y, p4.Y));

// 计算宽高
float width = maxX - minX;
float height = maxY - minY;

// 如果坚持用p1的X/Y作为矩形的起始坐标,只要p1是左上角点就没问题
RectangleF rec = new RectangleF(p1.X, p1.Y, width, height);

这样不管点的顺序如何,都能准确得到矩形的宽高,完全匹配RectangleF构造函数的参数要求。

内容的提问来源于stack exchange,提问作者martin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 10:16:36