mirror of
https://github.com/unanmed/HumanBreak.git
synced 2025-04-19 17:16:08 +08:00
168 lines
3.6 KiB
Markdown
168 lines
3.6 KiB
Markdown
# g-rectr 标签 API 文档
|
||
|
||
本文档由 `DeepSeek R1` 模型生成并微调。
|
||
|
||
---
|
||
|
||
```mermaid
|
||
graph LR
|
||
RectRProps --> GraphicBaseProps --> BaseProps
|
||
|
||
click GraphicBaseProps "./GraphicBaseProps"
|
||
click BaseProps "./BaseProps"
|
||
```
|
||
|
||
---
|
||
|
||
## 接口定义
|
||
|
||
```typescript
|
||
interface RectRProps extends GraphicBaseProps {
|
||
/**
|
||
* 圆形圆角参数 [左上, 右上, 右下, 左下]
|
||
* - 1个值:全角相同
|
||
* - 2个值:左上+右下 / 右上+左下
|
||
* - 3个值:左上 / 右上+左下 / 右下
|
||
* - 4个值:分别设置四个角 左上、右上、左下、右下
|
||
*/
|
||
circle?: RectRCircleParams;
|
||
|
||
/**
|
||
* 椭圆圆角参数 [x半径, y半径, ...]
|
||
* - 1组:全角相同
|
||
* - 2组:左上+右下 / 右上+左下
|
||
* - 3组:左上 / 右上+左下 / 右下
|
||
* - 4组:分别设置四个角 左上、右上、左下、右下
|
||
*/
|
||
ellipse?: RectREllipseParams;
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
## 核心行为规则
|
||
|
||
- **参数限制**:若圆角值超过 `width/height` 的 50% 或为负数,将自动修正:
|
||
- 负值 → 修正为 0
|
||
- 超过 50% → 修正为 50%
|
||
- **参数优先级**:`ellipse` 优先级高于 `circle`
|
||
|
||
---
|
||
|
||
## 完整示例集
|
||
|
||
### 示例 1:统一圆形圆角
|
||
|
||
```tsx
|
||
<g-rectr
|
||
loc={[100, 100, 300, 200]} // x,y,width,height
|
||
circle={[20]} // 所有角20px半径
|
||
fill
|
||
fillStyle="#3498db"
|
||
/>
|
||
```
|
||
|
||
---
|
||
|
||
### 示例 2:差异圆形圆角
|
||
|
||
```tsx
|
||
<g-rectr
|
||
loc={[500, 200, 250, 150]}
|
||
circle={[30, 15, 50, 0]} // 左上30px, 右上15px, 右下50px, 左下0px
|
||
stroke
|
||
strokeStyle="#2c3e50"
|
||
strokeWidth={4}
|
||
/>
|
||
```
|
||
|
||
---
|
||
|
||
### 示例 3:椭圆圆角
|
||
|
||
```tsx
|
||
<g-rectr
|
||
loc={[100, 400, 200, 100]}
|
||
ellipse={[30, 20, 10, 40]} // 左上+右下(30,20), 右上+左下(10,40)
|
||
fillStyle="#e74c3c"
|
||
fillRule="nonzero"
|
||
/>
|
||
```
|
||
|
||
---
|
||
|
||
### 示例 4:混合椭圆圆角
|
||
|
||
```tsx
|
||
<g-rectr
|
||
loc={[500, 400, 300, 200]}
|
||
ellipse={[
|
||
80,
|
||
50, // 左上:水平80px 垂直50px
|
||
40,
|
||
100, // 右上:水平40px 垂直100px
|
||
120,
|
||
30, // 右下:水平120px 垂直30px
|
||
60,
|
||
80 // 左下:水平60px 垂直80px
|
||
]}
|
||
fillStyle="#2ecc71"
|
||
strokeWidth={2}
|
||
/>
|
||
```
|
||
|
||
---
|
||
|
||
## 参数对照表
|
||
|
||
### 圆形圆角(circle)参数规则
|
||
|
||
| 参数数量 | 生效规则 |
|
||
| -------- | -------------------------------------------- |
|
||
| 1 | 全角相同:`[20] → [20,20,20,20]` |
|
||
| 2 | 对角对称:`[10,30] → [10,30,30,10]` |
|
||
| 3 | 左上/对角/右下:`[10,20,30] → [10,20,30,20]` |
|
||
| 4 | 独立设置四个角:`[10,20,30,40]` |
|
||
|
||
### 椭圆圆角(ellipse)参数规则
|
||
|
||
| 参数组数 | 生效规则 |
|
||
| -------- | ---------------------------------------------- |
|
||
| 1 | 全角相同:`[15,20] → 四角均为15x20` |
|
||
| 2 | 对角对称:`[10,5,20,10] → 左上+右下/右上+左下` |
|
||
| 3 | 左上/对角/右下:`[10,20,15,5,20,10]` |
|
||
| 4 | 独立设置四个角:`[10,20,15,25,20,30,5,10]` |
|
||
|
||
---
|
||
|
||
## 错误处理示例
|
||
|
||
```tsx
|
||
// 危险参数示例
|
||
<g-rectr
|
||
loc={[0, 0, 100, 50]}
|
||
circle={[-10, 200]} // 输入 [-10, 200]
|
||
stroke={true}
|
||
/>
|
||
```
|
||
|
||
**实际生效值**:
|
||
|
||
- 负值修正:`-10 → 0`
|
||
- 超限修正:`200 → min(200, 50/2=25) → 25px`
|
||
- 最终参数:`[0,25] → [0,25,25,0]`
|
||
|
||
---
|
||
|
||
## 最佳实践建议
|
||
|
||
1. **响应式圆角**:
|
||
|
||
```tsx
|
||
// 圆角随尺寸变化
|
||
<g-rectr
|
||
loc={[x, y, width.value, height]}
|
||
circle={[width.value * 0.1]} // 圆角为宽度的10%
|
||
/>
|
||
```
|