---
# System prepended metadata

title: '<font style="text-shadow:0px 0px 15px #FF37FD;">Region</font>'
tags: [Kotlin, Android developer]

---

<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
**輸出結果 :**
![](https://i.imgur.com/76pMEgv.png)
:::

### <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
**輸出結果 :**
![](https://i.imgur.com/32AZaXd.png)
:::

### <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，而當前值保持不變。
:::