智能客服
你问我答,随时在线为你解决问题

























提供处理矩形的工具,支持矩形的快速构建与基本属性获取、边界计算与调整、平移与状态判断、边界规范化等功能。
主要的使用场景:
矩形快速构建与获取基本属性,如构造新矩形、拷贝矩形、获取矩形的宽高以及中心点等。
边界计算与调整,如判断包含关系、计算与更新矩形之间交集和并集,更新边界值等。
矩形平移与状态判断,如对矩形进行平移、将矩形平移到指定位置、判断矩形是否为空以及判断两个矩形是否相等。
矩形边界规范化,如对存在反转情况的矩形边界值进行交换排序等。
本模块首批接口从API version 11开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
本Class首批接口从API version 20开始支持。
本模块使用屏幕物理像素单位px。
本模块为单线程模型策略,需要调用方自行管理线程安全和上下文状态的切换。
- import { drawing } from '@kit.ArkGraphics2D';
static makeEmpty(): common2D.Rect
创建一个上下左右边界坐标都是0的矩形。
系统能力: SystemCapability.Graphics.Drawing
返回值:
| 类型 | 说明 |
|---|---|
| common2D.Rect | 创建的矩形对象。 |
示例:
- import { drawing } from '@kit.ArkGraphics2D';
-
- let rect = drawing.RectUtils.makeEmpty();
static makeLtrb(left: number, top: number, right: number, bottom: number): common2D.Rect
创建指定上下左右边界的矩形。
系统能力: SystemCapability.Graphics.Drawing
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| left | number | 是 | 矩形的左上角x轴坐标,该参数为浮点数。0表示坐标原点,负数表示位于坐标原点左侧,正数表示位于坐标原点右侧。单位为物理像素px。 |
| top | number | 是 | 矩形的左上角y轴坐标,该参数为浮点数。0表示坐标原点,负数表示位于坐标原点上侧,正数表示位于坐标原点下侧。单位为物理像素px。 |
| right | number | 是 | 矩形的右下角x轴坐标,该参数为浮点数。0表示坐标原点,负数表示位于坐标原点左侧,正数表示位于坐标原点右侧。单位为物理像素px。 |
| bottom | number | 是 | 矩形的右下角y轴坐标,该参数为浮点数。0表示坐标原点,负数表示位于坐标原点上侧,正数表示位于坐标原点下侧。单位为物理像素px。 |
返回值:
| 类型 | 说明 |
|---|---|
| common2D.Rect | 创建的矩形。 |
示例:
- import { drawing } from '@kit.ArkGraphics2D';
-
- let rect = drawing.RectUtils.makeLtrb(10, 10, 20, 20);
static makeCopy(src: common2D.Rect): common2D.Rect
拷贝一个矩形。
系统能力: SystemCapability.Graphics.Drawing
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| src | common2D.Rect | 是 | 用于拷贝的矩形。 |
返回值:
| 类型 | 说明 |
|---|---|
| common2D.Rect | 创建的新矩形。 |
示例:
- import { drawing } from '@kit.ArkGraphics2D';
-
- let rect = drawing.RectUtils.makeLtrb(10, 10, 20, 20);
- let rect2 = drawing.RectUtils.makeCopy(rect);
- console.info('rect2.left: ', rect2.left);
- console.info('rect2.top: ', rect2.top);
- console.info('rect2.right: ', rect2.right);
- console.info('rect2.bottom: ', rect2.bottom);
static getWidth(rect: common2D.Rect): number
获取矩形的宽度。
系统能力: SystemCapability.Graphics.Drawing
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| rect | common2D.Rect | 是 | 需要获取宽度的矩形对象。 |
返回值:
| 类型 | 说明 |
|---|---|
| number | 返回矩形的宽。如果矩形的左边界大于右边界,获取的宽度为负值,左边界小于右边界则为正值。单位为物理像素px。 |
示例:
- import { drawing } from '@kit.ArkGraphics2D';
-
- let rect = drawing.RectUtils.makeLtrb(10, 10, 20, 20);
- let width = drawing.RectUtils.getWidth(rect);
- console.info('width:', width);
static getHeight(rect: common2D.Rect): number
获取矩形的高度。
系统能力: SystemCapability.Graphics.Drawing
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| rect | common2D.Rect | 是 | 需要获取高度的矩形对象。 |
返回值:
| 类型 | 说明 |
|---|---|
| number | 返回矩形的高。如果矩形的上边界大于下边界,获取的高度为负值,上边界小于下边界则为正值。单位为物理像素px。 |
示例:
- import { drawing } from '@kit.ArkGraphics2D';
-
- let rect = drawing.RectUtils.makeLtrb(10, 10, 20, 20);
- let height = drawing.RectUtils.getHeight(rect);
static centerX(rect: common2D.Rect): number
获取矩形中心的x轴坐标,中心x轴坐标为矩形左边界与右边界之和的一半。
系统能力: SystemCapability.Graphics.Drawing
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| rect | common2D.Rect | 是 | 需要获取中心x轴坐标的矩形对象。 |
返回值:
| 类型 | 说明 |
|---|---|
| number | 返回矩形中心的x轴坐标。单位为物理像素px。 |
示例:
- import { drawing } from '@kit.ArkGraphics2D';
-
- let rect = drawing.RectUtils.makeLtrb(20, 30, 30, 40);
- let x = drawing.RectUtils.centerX(rect);
static centerY(rect: common2D.Rect): number
获取矩形中心的y轴坐标,中心y轴坐标为矩形上边界与下边界之和的一半。
系统能力: SystemCapability.Graphics.Drawing
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| rect | common2D.Rect | 是 | 需要获取中心y轴坐标的矩形对象。 |
返回值:
| 类型 | 说明 |
|---|---|
| number | 返回矩形中心的y轴坐标。单位为物理像素px。 |
示例:
- import { drawing } from '@kit.ArkGraphics2D';
-
- let rect = drawing.RectUtils.makeLtrb(20, 30, 30, 40);
- let y = drawing.RectUtils.centerY(rect);
static contains(rect: common2D.Rect, other: common2D.Rect): boolean
判断一个矩形是否完全包含另外一个矩形。
系统能力: SystemCapability.Graphics.Drawing
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| rect | common2D.Rect | 是 | 用于判断是否包含其他矩形的矩形对象。 |
| other | common2D.Rect | 是 | 判断是否被包含的矩形对象。 |
返回值:
| 类型 | 说明 |
|---|---|
| boolean | 返回矩形是否完全包含另一个矩形的结果。true表示other在rect内部或者两者相等;false表示other矩形不完全在rect内部(即存在部分区域在rect外部),或者rect、other任一为空矩形。左边界和上边界属于矩形内部,右边界和下边界不属于矩形内部。 |
示例:
- import { drawing } from '@kit.ArkGraphics2D';
-
- let rect = drawing.RectUtils.makeLtrb(10, 10, 20, 20);
- let rect2 = drawing.RectUtils.makeLtrb(0, 0, 40, 40);
- let isContains = drawing.RectUtils.contains(rect2, rect);
- console.info('isContains: ', isContains);
static contains(rect: common2D.Rect, left: number, top: number, right: number, bottom: number): boolean
判断一个矩形是否完全包含另外一个矩形(另一个矩形分别用左上右下坐标表示)。
系统能力: SystemCapability.Graphics.Drawing
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| rect | common2D.Rect | 是 | 用于判断是否包含由左上右下坐标组成的矩形的原矩形对象。 |
| left | number | 是 | 矩形的左上角x轴坐标,该参数为浮点数。0表示坐标原点,负数表示位于坐标原点左侧,正数表示位于坐标原点右侧。单位为物理像素px。 |
| top | number | 是 | 矩形的左上角y轴坐标,该参数为浮点数。0表示坐标原点,负数表示位于坐标原点上侧,正数表示位于坐标原点下侧。单位为物理像素px。 |
| right | number | 是 | 矩形的右下角x轴坐标,该参数为浮点数。0表示坐标原点,负数表示位于坐标原点左侧,正数表示位于坐标原点右侧。单位为物理像素px。 |
| bottom | number | 是 | 矩形的右下角y轴坐标,该参数为浮点数。0表示坐标原点,负数表示位于坐标原点上侧,正数表示位于坐标原点下侧。单位为物理像素px。 |
返回值:
| 类型 | 说明 |
|---|---|
| boolean | 返回矩形是否完全包含由左上右下坐标组成的矩形的结果。true表示由left、top、right、bottom组成的矩形完全在rect矩形内部,或两个矩形完全相等。false表示该矩形不完全在rect内部(即存在部分区域在rect外部),或者rect、该矩形任一为空矩形。 |
示例:
- import { drawing } from '@kit.ArkGraphics2D';
-
- let rect = drawing.RectUtils.makeLtrb(0, 0, 100, 100);
- let isContains = drawing.RectUtils.contains(rect, 10, 20, 30, 40);
- console.info('isContains: ', isContains);
static contains(rect: common2D.Rect, x: number, y: number): boolean
判断一个矩形是否完全包含一个点。
系统能力: SystemCapability.Graphics.Drawing
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| rect | common2D.Rect | 是 | 用于判断是否包含指定点的原矩形对象。 |
| x | number | 是 | 要判断点的x轴坐标,该参数为浮点数。0表示坐标原点,负数表示位于坐标原点左侧,正数表示位于坐标原点右侧。单位为物理像素px。 |
| y | number | 是 | 要判断点的y轴坐标,该参数为浮点数。0表示坐标原点,负数表示位于坐标原点上侧,正数表示位于坐标原点下侧。单位为物理像素px。 |
返回值:
| 类型 | 说明 |
|---|---|
| boolean | 返回矩形是否完全包含x、y组成的点的结果。true表示矩形完全包含x、y组成的点,false表示矩形不完全包含x、y组成的点。左边界和上边界属于矩形内部,右边界和下边界不属于矩形内部。空的矩形不包含任何点。 |
示例:
- import { drawing } from '@kit.ArkGraphics2D';
-
- let rect = drawing.RectUtils.makeLtrb(0, 0, 100, 100);
- let isContains = drawing.RectUtils.contains(rect, 10, 20);
- console.info('isContains: ', isContains);
static inset(rect: common2D.Rect, left: number, top: number, right: number, bottom: number): void
将指定矩形的左边界、上边界、右边界和下边界分别和传入的“左上右下”的值相加。
系统能力: SystemCapability.Graphics.Drawing
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| rect | common2D.Rect | 是 | 需要进行边界调整的原矩形对象。 |
| left | number | 是 | 添加到矩形左边界的值(矩形左上角x轴坐标),该参数为浮点数。0表示不进行任何运算,正数表示进行相加运算,负数表示相减运算。单位为物理像素px。 |
| top | number | 是 | 添加到矩形上边界的值(矩形左上角y轴坐标),该参数为浮点数。0表示不进行任何运算,正数表示进行相加运算,负数表示相减运算。单位为物理像素px。 |
| right | number | 是 | 添加到矩形右边界的值(矩形右下角x轴坐标),该参数为浮点数。0表示不进行任何运算,正数表示进行相加运算,负数表示相减运算。单位为物理像素px。 |
| bottom | number | 是 | 添加到矩形下边界的值(矩形右下角y轴坐标),该参数为浮点数。0表示不进行任何运算,正数表示进行相加运算,负数表示相减运算。单位为物理像素px。 |
示例:
- import { drawing } from '@kit.ArkGraphics2D';
-
- let rect = drawing.RectUtils.makeLtrb(10, 10, 20, 20);
- drawing.RectUtils.inset(rect, 10, -20, 30, 60);
- console.info('rect.left: ', rect.left);
- console.info('rect.top: ', rect.top);
- console.info('rect.right: ', rect.right);
- console.info('rect.bottom: ', rect.bottom);
static intersect(rect: common2D.Rect, other: common2D.Rect): boolean
计算两个矩形的交集区域,并将交集结果更新到第一个入参代表的矩形区域。
系统能力: SystemCapability.Graphics.Drawing
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| rect | common2D.Rect | 是 | 用于计算交集的原矩形。 |
| other | common2D.Rect | 是 | 用于计算交集的另一个矩形。 |
返回值:
| 类型 | 说明 |
|---|---|
| boolean | 返回两个矩形是否相交。true表示两矩形相交,false表示两矩形不相交,或仅边重叠、点相交。 |
示例:
- import { drawing } from '@kit.ArkGraphics2D';
-
- let rect = drawing.RectUtils.makeLtrb(0, 0, 20, 20);
- let rect2 = drawing.RectUtils.makeLtrb(10, 10, 40, 40);
- let isIntersect = drawing.RectUtils.intersect(rect, rect2);
- console.info('isIntersect: ', isIntersect);
- console.info('rect.left: ', rect.left);
- console.info('rect.top: ', rect.top);
- console.info('rect.right: ', rect.right);
- console.info('rect.bottom: ', rect.bottom);
static isIntersect(rect: common2D.Rect, other: common2D.Rect): boolean
判断两个矩形是否相交。
系统能力: SystemCapability.Graphics.Drawing
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| rect | common2D.Rect | 是 | 用于判断是否相交的原矩形。 |
| other | common2D.Rect | 是 | 用于判断是否相交的另一个矩形。 |
返回值:
| 类型 | 说明 |
|---|---|
| boolean | 返回两个矩形是否有交集的结果。true表示两个矩形有交集,false表示两个矩形没有交集。两矩形仅边重叠或点相交返回false。 |
示例:
- import { drawing } from '@kit.ArkGraphics2D';
-
- let rect = drawing.RectUtils.makeLtrb(0, 0, 20, 20);
- let rect2 = drawing.RectUtils.makeLtrb(10, 10, 40, 40);
- let isIntersect = drawing.RectUtils.isIntersect(rect, rect2);
- console.info('isIntersect:', isIntersect);
static union(rect: common2D.Rect, other: common2D.Rect): void
计算两个矩形的并集区域,并将并集结果更新到第一个入参代表的矩形区域。如果第一个入参矩形为空,则将并集结果更新到第二个入参代表的矩形区域;如果第二个入参的矩形为空,则不进行任何操作。
系统能力: SystemCapability.Graphics.Drawing
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| rect | common2D.Rect | 是 | 用于计算并集的原矩形。 |
| other | common2D.Rect | 是 | 用于计算并集的另一个矩形。 |
示例:
- import { drawing } from '@kit.ArkGraphics2D';
-
- let rect = drawing.RectUtils.makeLtrb(0, 0, 20, 20);
- let rect2 = drawing.RectUtils.makeLtrb(10, 10, 40, 40);
- drawing.RectUtils.union(rect, rect2);
- console.info('rect.left: ', rect.left);
- console.info('rect.top: ', rect.top);
- console.info('rect.right: ', rect.right);
- console.info('rect.bottom: ', rect.bottom);
static isEmpty(rect: common2D.Rect): boolean
判断矩形是否为空(左边界大于等于右边界或者上边界大于等于下边界)。
系统能力: SystemCapability.Graphics.Drawing
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| rect | common2D.Rect | 是 | 用于判断是否为空的矩形对象。 |
返回值:
| 类型 | 说明 |
|---|---|
| boolean | 返回矩形是否为空的结果。true表示矩形为空,false表示矩形不为空。 |
示例:
- import { drawing } from '@kit.ArkGraphics2D';
-
- let rect = drawing.RectUtils.makeEmpty();
- let isEmpty = drawing.RectUtils.isEmpty(rect);
- console.info('isEmpty:', isEmpty);
- let rect2 = drawing.RectUtils.makeLtrb(0, 0, 20, 20);
- isEmpty = drawing.RectUtils.isEmpty(rect2);
- console.info('isEmpty:', isEmpty);
static offset(rect: common2D.Rect, dx: number, dy: number): void
对矩形进行平移。
系统能力: SystemCapability.Graphics.Drawing
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| rect | common2D.Rect | 是 | 发生平移的矩形区域。 |
| dx | number | 是 | 水平方向平移的距离,该参数为浮点数。0表示不平移,负数表示向左平移,正数表示向右平移。单位为物理像素px。 |
| dy | number | 是 | 竖直方向平移的距离,该参数为浮点数。0表示不平移,负数表示向上平移,正数表示向下平移。单位为物理像素px。 |
示例:
- import { drawing } from '@kit.ArkGraphics2D';
-
- let rect = drawing.RectUtils.makeLtrb(0, 0, 20, 20);
- drawing.RectUtils.offset(rect, 10, 20);
- console.info('rect.left: ', rect.left);
- console.info('rect.top: ', rect.top);
- console.info('rect.right: ', rect.right);
- console.info('rect.bottom: ', rect.bottom);
static offsetTo(rect: common2D.Rect, newLeft: number, newTop: number): void
将矩形平移到指定位置。
系统能力: SystemCapability.Graphics.Drawing
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| rect | common2D.Rect | 是 | 发生平移的矩形区域。 |
| newLeft | number | 是 | 要平移到的对应位置的x轴坐标,该参数为浮点数。0表示坐标原点,负数表示位于坐标原点左侧,正数表示位于坐标原点右侧。单位为物理像素px。 |
| newTop | number | 是 | 要平移到的对应位置的y轴坐标,该参数为浮点数。0表示坐标原点,负数表示位于坐标原点上侧,正数表示位于坐标原点下侧。单位为物理像素px。 |
示例:
- import { drawing } from '@kit.ArkGraphics2D';
-
- let rect = drawing.RectUtils.makeLtrb(20, 20, 40, 40);
- drawing.RectUtils.offsetTo(rect, 10, 20);
- console.info('rect.left: ', rect.left);
- console.info('rect.top: ', rect.top);
- console.info('rect.right: ', rect.right);
- console.info('rect.bottom: ', rect.bottom);
static setRect(rect: common2D.Rect, other: common2D.Rect): void
使用另一个矩形对当前矩形进行赋值。
系统能力: SystemCapability.Graphics.Drawing
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| rect | common2D.Rect | 是 | 需要被赋值的原矩形对象。 |
| other | common2D.Rect | 是 | 用于赋值的矩形。 |
示例:
- import { drawing } from '@kit.ArkGraphics2D';
-
- let rect = drawing.RectUtils.makeLtrb(10, 20, 30, 40);
- let rect2 = drawing.RectUtils.makeEmpty();
- drawing.RectUtils.setRect(rect2, rect);
- console.info('rect2.left: ', rect2.left);
- console.info('rect2.top: ', rect2.top);
- console.info('rect2.right: ', rect2.right);
- console.info('rect2.bottom: ', rect2.bottom);
static setLtrb(rect: common2D.Rect, left: number, top: number, right: number, bottom: number): void
使用传入的“左上右下”的值更新当前矩形的左上右下边界值。
系统能力: SystemCapability.Graphics.Drawing
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| rect | common2D.Rect | 是 | 需要更新边界值的原矩形对象。 |
| left | number | 是 | 矩形的左上角x轴坐标,该参数为浮点数。0表示坐标原点,负数表示位于坐标原点左侧,正数表示位于坐标原点右侧。单位为物理像素px。 |
| top | number | 是 | 矩形的左上角y轴坐标,该参数为浮点数。0表示坐标原点,负数表示位于坐标原点上侧,正数表示位于坐标原点下侧。单位为物理像素px。 |
| right | number | 是 | 矩形的右下角x轴坐标,该参数为浮点数。0表示坐标原点,负数表示位于坐标原点左侧,正数表示位于坐标原点右侧。单位为物理像素px。 |
| bottom | number | 是 | 矩形的右下角y轴坐标,该参数为浮点数。0表示坐标原点,负数表示位于坐标原点上侧,正数表示位于坐标原点下侧。单位为物理像素px。 |
示例:
- import { drawing } from '@kit.ArkGraphics2D';
-
- let rect = drawing.RectUtils.makeEmpty();
- drawing.RectUtils.setLtrb(rect, 10, 20, 30, 60);
- console.info('rect.left: ', rect.left);
- console.info('rect.top: ', rect.top);
- console.info('rect.right: ', rect.right);
- console.info('rect.bottom: ', rect.bottom);
static setEmpty(rect: common2D.Rect): void
将矩形的上下左右边界都设为0。
系统能力: SystemCapability.Graphics.Drawing
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| rect | common2D.Rect | 是 | 用于设置为空的矩形对象。 |
示例:
- import { drawing } from '@kit.ArkGraphics2D';
-
- let rect = drawing.RectUtils.makeLtrb(10, 20, 20, 30);
- drawing.RectUtils.setEmpty(rect);
- console.info('rect.left: ', rect.left);
- console.info('rect.top: ', rect.top);
- console.info('rect.right: ', rect.right);
- console.info('rect.bottom: ', rect.bottom);
static sort(rect: common2D.Rect): void
如果矩形存在反转的情况(即左边界大于右边界或上边界大于下边界),则将发生反转的对应边界值进行交换(若左边界大于右边界,交换左右边界值;若上边界大于下边界,交换上下边界值),使得上边界小于下边界(左边界小于右边界)。
如果矩形不存在反转的情况(即左边界小于等于右边界且上边界小于等于下边界),不做任何操作。
系统能力: SystemCapability.Graphics.Drawing
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| rect | common2D.Rect | 是 | 待进行边界排序的矩形对象。 |
示例:
- import { drawing } from '@kit.ArkGraphics2D';
-
- let rect = drawing.RectUtils.makeLtrb(20, 40, 30, 30);
- drawing.RectUtils.sort(rect);
- console.info('rect.left: ', rect.left);
- console.info('rect.top: ', rect.top);
- console.info('rect.right: ', rect.right);
- console.info('rect.bottom: ', rect.bottom);
static isEqual(rect: common2D.Rect, other: common2D.Rect): boolean
判断两个矩形是否相等。
系统能力: SystemCapability.Graphics.Drawing
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| rect | common2D.Rect | 是 | 需要判断是否相等的原矩形。 |
| other | common2D.Rect | 是 | 需要判断是否相等的另一个矩形。 |
返回值:
| 类型 | 说明 |
|---|---|
| boolean | 返回两个矩形是否相等的结果。true表示两个矩形相等,false表示两个矩形不相等。 |
示例:
- import { drawing } from '@kit.ArkGraphics2D';
-
- let rect = drawing.RectUtils.makeLtrb(10, 20, 20, 30);
- let rect2 = drawing.RectUtils.makeEmpty();
- let isEqual = drawing.RectUtils.isEqual(rect, rect2);
- console.info('isEqual:', isEqual);
智能客服
你问我答,随时在线为你解决问题
合作咨询
我们的专家服务团队将竭诚为您提供专业的合作咨询服务
解决方案
精准高效的一站式服务支持,助力开发者商业成功