<font style="text-shadow:0px 0px 15px #FF37FD;">Region</font>
===
###### tags: `Android developer` `Kotlin`
<font color="Brown">android.graphics.Region</font>
<font color="Brown">不是用來繪圖,重點是相交操作</font>
## <font color="sandybrown">Nested classes</font>
### <font color="#990DFF">[Op](https://hackmd.io/2YzCqFsDSLO_5lOEm6KRvw?both#REPLACE)</font>
## <font color="sandybrown">Constructors</font>
### <font color="#990DFF">Region()</font>
### <font color="#990DFF">Region(region: Region)</font>
### <font color="#990DFF">Region(r: Rect)</font>
### <font color="#990DFF">Region(left: Int, top: Int, right: Int, bottom: Int)</font>
:::warning
**Ex:**
```kotlin=
val region=Region()
Paint().flags=ANTI_ALIAS_FLAG
```
:::
## <font color="sandybrown">方法</font>
### <font color="#990DFF">setEmpty(): Unit</font>
:::info
setEmpty(): Unit
:::
:::warning
**Ex:**
```kotlin=
// 間接構造
val region=Region()
region.setEmpty()
```
:::
### <font color="#990DFF">set(region: Region): Boolean</font>
:::info
將區域設置為指定區域。
:::
:::success
**參數**
region : 此值絕不能是null。
:::
### <font color="#990DFF">set(r: Rect): Boolean</font>
:::info
將區域設置為指定的矩形
:::
:::success
**參數**
r : 此值絕不能是null。
:::
### <font color="#990DFF">set(left: Int, top: Int, right: Int, bottom: Int): Boolean</font>
:::info
將區域設置為指定的矩形
:::
### <font color="#990DFF">setPath(path: Path, clip: Region): Boolean</font>
:::info
將區域設置為路徑和剪輯描述的區域。如果結果區域非空,則返回true。這會產生一個與路徑繪製的像素相同的區域(沒有抗鋸齒)。
:::
:::success
**參數**
path : 此值絕不能是null。
clip : 此值絕不能是null。
:::
:::warning
**Ex:**
```kotlin=
val ovalPath=Path()
ovalPath.addOval(50f,50f,200f,500f,Path.Direction.CCW)
val region=Region()
region.setPath(ovalPath,Region(50,50,200,200))
canvas?.drawTextOnPath(string,circlePath2,80f,30f,paint)
```
:::
### <font color="#990DFF">union(r: Rect): Boolean</font>
:::info
聯集
:::
:::success
**參數**
r : 這個值絕對不能null。
:::
:::warning
**Ex:**
```kotlin=
val paint = Paint().apply {
color = Color.RED
style = Paint.Style.FILL
}
val region = Region(10, 10, 200, 100)
region.union(Rect(10, 10, 50, 300))
val regionIterator=RegionIterator(region)
val rect=Rect()
while (regionIterator.next(rect)){
canvas?.drawRect(rect,paint)
}
```
:::danger
**輸出結果 :**

:::
### <font color="#990DFF">op(r: Rect, op: Region.Op): Boolean</font>
:::info
在此區域和指定的rect上執行指定的Op。如果op的結果不為空,則返回true。
:::
:::success
**參數**
r : 這個值絕對不能null。
op : 這個值絕對不能null。
:::
:::warning
**Ex:**
```kotlin=
// 最終區域為 region1 與 region2 不相同的區域
region1.op(region2, Region.Op.DIFFERENCE)
// 最終區域為 region1 與 region2 相交的區域
region1.op(region2, Region.Op.INTERSECT)
// 最終區域為 region2 區域
region1.op(region2, Region.Op.REPLACE)
// 最終區域為 region2 與 region1 不相同的區域
region1.op(region2, Region.Op.REVERSE_DIFFERENCE)
// 最終區域為 region1 與 region2 組合在一起的區域
region1.op(region2, Region.Op.UNION)
// 最終區域為 region1 與 region2 相交以外的區域
region1.op(region2, Region.Op.XOR)
```
:::danger
**輸出結果 :**

:::
### <font color="#990DFF">isEmpty(): Boolean</font>
:::info
如果此區域為空,則返回true
:::
### <font color="#990DFF">isRect(): Boolean</font>
:::info
如果區域包含單個矩形,則返回true
:::
### <font color="#990DFF">isComplex(): Boolean</font>
:::info
如果區域包含多個矩形,則返回true
:::
### <font color="#990DFF">getBounds(): Rect</font>
:::info
將新的Rect集返回到區域的邊界。如果該區域為空,則Rect將設置為[0,0,0,0]
:::
### <font color="#990DFF">getBounds(r: Rect): Boolean</font>
:::info
將Rect設置為區域的邊界。如果該區域為空,則Rect將設置為[0,0,0,0]
:::
:::success
**參數**
r : 這個值絕對不能null。
:::
### <font color="#990DFF">getBoundaryPath(): Path</font>
:::info
返回區域的邊界作為新路徑。如果該區域為空,則路徑也將為空。
:::
### <font color="#990DFF">getBoundaryPath(path: Path): Boolean</font>
:::info
設置區域邊界的路徑。如果該區域為空,則路徑也將為空。
:::
:::success
**參數**
path : 這個值絕對不能null。
:::
### <font color="#990DFF">contains(x: Int, y: Int): Boolean</font>
:::info
如果區域包含指定的點,則返回true
:::
### <font color="#990DFF">quickContains(r: Rect): Boolean</font>
:::info
如果區域是單個矩形(不復雜)並且它包含指定的矩形,則返回true。返回false並不能保證此區域不包含矩形,但返回true則保證該區域包含矩形。
:::
:::success
**參數**
r : 這個值絕對不能null。
:::
### <font color="#990DFF">quickContains(left: Int, top: Int, right: Int, bottom: Int): Boolean</font>
:::info
如果區域是單個矩形(不復雜)並且它包含指定的矩形,則返回true。返回false並不能保證此區域不包含矩形,但返回true則保證該區域包含矩形。
:::
### <font color="#990DFF">quickReject(r: Rect): Boolean</font>
:::info
如果區域為空,或者指定的矩形與區域不相交,則返回true。返回false並不能保證它們相交,但返回true則保證它們不相交。
:::
:::success
**參數**
r : 這個值絕對不能null。
:::
### <font color="#990DFF">quickReject(left: Int, top: Int, right: Int, bottom: Int): Boolean</font>
:::info
如果區域為空,或者指定的矩形與區域不相交,則返回true。返回false並不能保證它們相交,但返回true則保證它們不相交。
:::
### <font color="#990DFF">quickReject(rgn: Region!): Boolean</font>
:::info
如果區域為空,或者指定的區域與區域不相交,則返回true。返回false並不能保證它們相交,但返回true則保證它們不相交。
:::
### <font color="#990DFF">translate(dx: Int, dy: Int): Unit</font>
:::info
該函數用於將 Region 向 X 軸平移 dx 距離,向 Y 軸平移 dy 距離,將結果返回
:::
### <font color="#990DFF">translate(dx: Int, dy: Int, dst: Region!): Unit</font>
:::info
該函數用於將 Region 向 X 軸平移 dx 距離,向 Y 軸平移 dy 距離,將結果給 dst,而當前值保持不變。
:::