# builtin.struct 库模块帮助文档

<details>  <summary>结构体定义</summary>  <p>

aardio 已默认定义以下结构体：

```aardio
class ::POINT {
   ctor(x=0,y=0){
      this.x = x;
      this.y = y;
   } 
   int x ; 
   int y ;
}

class ::SIZE {
	ctor(cx=0,cy=0){
      this.cx = cx;
      this.cy = cy;
	}
	int cx;
	int cy;
} 

class ::RECT {
	ctor(left=0,top=0,right=0,bottom=0){
  		this.left = left;
  		this.top = top;
  		this.right = right;
  		this.bottom = bottom; 
	} 
	int left;
	int top;
	int right;
	int bottom;
	@_meta;
}
```
</p></details>

## pointObject 成员列表 <a id="pointObject" href="#pointObject">&#x23;</a>

::POINT 结构体对象，包含用于表示坐标的数值字段 x,y

### pointObject.x <a id="pointObject.x" href="#pointObject.x">&#x23;</a>
x坐标

### pointObject.y <a id="pointObject.y" href="#pointObject.y">&#x23;</a>
y坐标

## rectObject 成员列表 <a id="rectObject" href="#rectObject">&#x23;</a>

::RECT 结构体对象，包含用于表示区块位置的数值字段 left,top,right,bottom 。

### rectObject.bottom <a id="rectObject.bottom" href="#rectObject.bottom">&#x23;</a>
下（数值）。  
结构体实际存储的字段，原生类型为 32 位 int 类型。

### rectObject.contains(x,y) <a id="rectObject.contains" href="#rectObject.contains">&#x23;</a>
检测指定的 x,y 坐标是否位于矩形区块内

### rectObject.copy <a id="rectObject.copy" href="#rectObject.copy">&#x23;</a>
复制并返回新的矩形区块结构体。

### rectObject.copy() <a id="rectObject.copy" href="#rectObject.copy">&#x23;</a>
[返回对象:rectObject](https://www.aardio.com/zh-cn/doc/library-reference/global/_.html#rectObject)

### rectObject.copy(width,height) <a id="rectObject.copy" href="#rectObject.copy">&#x23;</a>
可选在参数中返回矩形区块的新宽度、新高度。  
所有参数都可以省略。  
此函数不会改变对象自身的值。

### rectObject.expand <a id="rectObject.expand" href="#rectObject.expand">&#x23;</a>
扩展或缩小右下角坐标

### rectObject.expand() <a id="rectObject.expand" href="#rectObject.expand">&#x23;</a>
[返回对象:rectObject](https://www.aardio.com/zh-cn/doc/library-reference/global/_.html#rectObject)

### rectObject.expand(dx,dy) <a id="rectObject.expand" href="#rectObject.expand">&#x23;</a>
dx指定正数扩展右边,负数缩小右边,  
dy指定正数扩展底边,负数缩小底边  
左上角不变,  
返回自身

### rectObject.float() <a id="rectObject.float" href="#rectObject.float">&#x23;</a>
复制为 ::RECTF 结构体并返回该结构体。  
不允许指定参数。  

仅在使用 GDI+ 时aardio 会自动导入 :RECTF 结构体以后，  
此函数返回的对象才拥用 :RECTF 结构体的方法，  
否则仅返回具有相同字段的兼容结构体（不具有方法）。  

[返回对象:rectfObject](https://www.aardio.com/zh-cn/doc/library-reference/gdip/core.html#rectfObject)

### rectObject.getPos() <a id="rectObject.getPos" href="#rectObject.getPos">&#x23;</a>
此方法是 xywh 方法的别名。  
返回结构体的左上角坐标 x,y 以及宽度 width，高度 height 等4个值。  
::RECT,::RECTF 结构体都有这个同名函数，作用一样。

### rectObject.height <a id="rectObject.height" href="#rectObject.height">&#x23;</a>
高度（数值）。  
通过重载元方法支持的字段，读写此字段会自动转换为读写 bottom 字段。  
如果需要同时获取 x,y,width,height 等 4 个字段，改用 xywh 方法会更快。

### rectObject.inflate <a id="rectObject.inflate" href="#rectObject.inflate">&#x23;</a>
扩大区块并返回矩形区块自身

### rectObject.inflate() <a id="rectObject.inflate" href="#rectObject.inflate">&#x23;</a>
[返回对象:rectObject](https://www.aardio.com/zh-cn/doc/library-reference/global/_.html#rectObject)

### rectObject.inflate(左右单位,上下单位) <a id="rectObject.inflate" href="#rectObject.inflate">&#x23;</a>
扩大区块并返回矩形区块自身  
忽略参数请传入0,不可省略  
上,下,左,右分别扩大指定的单位  
负数为缩小

### rectObject.intersect <a id="rectObject.intersect" href="#rectObject.intersect">&#x23;</a>
与参数指定的矩形区块相交。  
如果仅检测两个区块是否相交请改用 intersectsWith 函数。

### rectObject.intersect(rc) <a id="rectObject.intersect" href="#rectObject.intersect">&#x23;</a>
如果与参数指定的矩形区块相交，则更新当前区块为相交的区块并返回自身。  
失败返回 null 值。

### rectObject.intersectsWith <a id="rectObject.intersectsWith" href="#rectObject.intersectsWith">&#x23;</a>
检测两个矩形区块是否碰撞相交

### rectObject.intersectsWith(rc) <a id="rectObject.intersectsWith" href="#rectObject.intersectsWith">&#x23;</a>
检测两个矩形区块是否碰撞相交

### rectObject.left <a id="rectObject.left" href="#rectObject.left">&#x23;</a>
左（数值）。  
结构体实际存储的字段，原生类型为 32 位 int 类型。

### rectObject.ltrb() <a id="rectObject.ltrb" href="#rectObject.ltrb">&#x23;</a>
返回结构体的 left,top,right,bottom 等 4 个值。  
::RECT,::RECTF 结构体都有这个同名函数，作用一样。

### rectObject.move <a id="rectObject.move" href="#rectObject.move">&#x23;</a>
移动左上角坐标

### rectObject.move() <a id="rectObject.move" href="#rectObject.move">&#x23;</a>
[返回对象:rectObject](https://www.aardio.com/zh-cn/doc/library-reference/global/_.html#rectObject)

### rectObject.move(dx,dy) <a id="rectObject.move" href="#rectObject.move">&#x23;</a>
使用参数指定的x,y坐标偏移量移动左上角坐标,  
正数向右下移动,负数向左上移动,  
右下角位置不变  
返回自身  
如果需要移动坐标且大小不变请改用offset函数  
移动到指定坐标而不是偏移量请改用setPos函数

### rectObject.offset <a id="rectObject.offset" href="#rectObject.offset">&#x23;</a>
移动矩形框并返回自身

### rectObject.offset() <a id="rectObject.offset" href="#rectObject.offset">&#x23;</a>
[返回对象:rectObject](https://www.aardio.com/zh-cn/doc/library-reference/global/_.html#rectObject)

### rectObject.offset(横偏移,纵偏移) <a id="rectObject.offset" href="#rectObject.offset">&#x23;</a>
移动矩形框并返回自身,矩形大小不变,  
左上移使用负坐标,右下移使用正坐标  
忽略参数请传入0,不可省略

### rectObject.right <a id="rectObject.right" href="#rectObject.right">&#x23;</a>
右（数值）。  
结构体实际存储的字段，原生类型为 32 位 int 类型。

### rectObject.setPos <a id="rectObject.setPos" href="#rectObject.setPos">&#x23;</a>
重新调整坐标与大小，返回结构体自身。

### rectObject.setPos() <a id="rectObject.setPos" href="#rectObject.setPos">&#x23;</a>
[返回对象:rectObject](https://www.aardio.com/zh-cn/doc/library-reference/global/_.html#rectObject)

### rectObject.setPos(x,y,cx,cy) <a id="rectObject.setPos" href="#rectObject.setPos">&#x23;</a>
移动到 x，y 指定的坐标，  
可选用 cx，cy 重新指定宽度和高度，  
所有参数可选，不指定则保持旧值。  
::RECT,::RECTF 结构体都有这个同名函数，作用一样。

### rectObject.top <a id="rectObject.top" href="#rectObject.top">&#x23;</a>
上（数值）。  
结构体实际存储的字段，原生类型为 32 位 int 类型。

### rectObject.width <a id="rectObject.width" href="#rectObject.width">&#x23;</a>
宽度（数值）。  
通过重载元方法支持的字段，读写此字段会自动转换为读写 right 字段。  
如果需要同时获取 x,y,width,height 等 4 个字段，改用 xywh 方法会更快。

### rectObject.x <a id="rectObject.x" href="#rectObject.x">&#x23;</a>
x 坐标（数值）。  
通过重载元方法支持的字段，读写此字段会自动转换为读写 left 字段。  
如果需要同时获取 x,y,width,height 等 4 个字段，改用 xywh 方法会更快。

### rectObject.xywh() <a id="rectObject.xywh" href="#rectObject.xywh">&#x23;</a>
返回结构体的左上角坐标 x,y 以及宽度 width，高度 height 等4个值。  
::RECT,::RECTF 结构体都有这个同名函数，作用一样。

### rectObject.y <a id="rectObject.y" href="#rectObject.y">&#x23;</a>
y 坐标（数值）。  
通过重载元方法支持的字段，读写此字段会自动转换为读写 top 字段。  
如果需要同时获取 x,y,width,height 等 4 个字段，改用 xywh 方法会更快。

## sizeObject 成员列表 <a id="sizeObject" href="#sizeObject">&#x23;</a>

::SIZE 结构体对象，包含用于表示大小的数值字段 cx,cy

### sizeObject.cx <a id="sizeObject.cx" href="#sizeObject.cx">&#x23;</a>
宽

### sizeObject.cy <a id="sizeObject.cy" href="#sizeObject.cy">&#x23;</a>
高

### 全局常量

### ::OffsetRect(rc,dx,dy) <a id="::OffsetRect(rc,dx,dy)" href="#::OffsetRect(rc,dx,dy)">&#x23;</a>
移动矩形框，  
此函数已废弃，请直接调用 rc.offset 函数

### ::POINT <a id="::POINT" href="#::POINT">&#x23;</a>
整型坐标结构体  
此结构体通过标准库 builtin.struct 默认加载

### ::POINT() <a id="::POINT()" href="#::POINT()">&#x23;</a>
[返回对象:pointObject](https://www.aardio.com/zh-cn/doc/library-reference/gdip/core.html#pointObject)

### ::POINT(x,y) <a id="::POINT(x,y)" href="#::POINT(x,y)">&#x23;</a>
创建整型坐标结构体  
可选在参数中指定 x,y 坐标初始值

### ::RECT <a id="::RECT" href="#::RECT">&#x23;</a>
用于创建表示矩形区块的结构体。  
由内置库 builtin.struct 默认加载。  
::RECT 使用 left,top,right,bottom 等 4 个数值字段存储上、下、左、右位置。  
::RECT 结构体通过重载操作符支持读写 x,y,width,height 字段。

### ::RECT() <a id="::RECT()" href="#::RECT()">&#x23;</a>
[返回对象:rectObject](https://www.aardio.com/zh-cn/doc/library-reference/global/_.html#rectObject)

### ::RECT(left,top,right,bottom) <a id="::RECT(left,top,right,bottom)" href="#::RECT(left,top,right,bottom)">&#x23;</a>
创建矩形区块结构体。  
可使用 4 个数值参数依次指定左（left）,上（top）,右（right）,下（bottom）四个字段的初始值。   
所有参数都是可选参数，未指定的字段则默认设为 0。

### ::RECT(rectObject) <a id="::RECT(rectObject)" href="#::RECT(rectObject)">&#x23;</a>
创建矩形区块结构体。  
参数 rectObject 可以是其他 ::RECT 或 ::RECTF 结构体，  
或者直接包含 left,top,right,bottom 字段（可通过直接下标获取）的普通表，  
也可以指定支持 x,y,width,height 字段的任意对象（例如 .NET 的 System.Windows.Rect 对象）。  
ectObject 可通过重载操作符返回 x,y,width,height 字段，  

返回新创建的 ::RECT 结构体。

### ::RECT2() <a id="::RECT2()" href="#::RECT2()">&#x23;</a>
[返回对象:rectObject](https://www.aardio.com/zh-cn/doc/library-reference/global/_.html#rectObject)

### ::RECT2(x,y,width,height) <a id="::RECT2(x,y,width,height)" href="#::RECT2(x,y,width,height)">&#x23;</a>
创建矩形区块结构体。  
可使用 4 个数值参数依次指定 x 坐标，y 坐标，宽度（width），高度（height）。  
所有参数都是可选参数，未指定的字段则默认设为 0。  
传入参数会转换为 left,top,right,bottom 格式并用于调用 ::RECT 构造函数。  
返回 ::RECT 结构体对象。

### ::SIZE <a id="::SIZE" href="#::SIZE">&#x23;</a>
整型尺寸结构体  
此结构体通过标准库 builtin.struct 默认加载

### ::SIZE() <a id="::SIZE()" href="#::SIZE()">&#x23;</a>
[返回对象:sizeObject](#sizeObject)

### ::SIZE(cx,cy) <a id="::SIZE(cx,cy)" href="#::SIZE(cx,cy)">&#x23;</a>
创建整型尺寸结构体  
可选在参数中指定宽高 cx,cy 初始值
