# g-bezier 标签 API 文档
本文档由 `DeepSeek R1` 模型生成并微调。
---
```mermaid
graph LR
BezierProps --> GraphicBaseProps --> BaseProps
click GraphicBaseProps "./GraphicBaseProps"
click BaseProps "./BaseProps"
```
---
## 接口定义
```typescript
interface BezierProps extends GraphicBaseProps {
sx?: number; // 起点X坐标
sy?: number; // 起点Y坐标
cp1x?: number; // 第一控制点X坐标
cp1y?: number; // 第一控制点Y坐标
cp2x?: number; // 第二控制点X坐标
cp2y?: number; // 第二控制点Y坐标
ex?: number; // 终点X坐标
ey?: number; // 终点Y坐标
curve?: BezierParams; // 简写属性 [sx, sy, cp1x, cp1y, cp2x, cp2y, ex, ey]
}
```
---
## 核心属性说明
| 属性 | 类型 | 默认值 | 说明 |
| ------- | ------------------------------------------ | ------ | ------------------------------------- |
| `sx` | `number` | - | 曲线起点 X 坐标(单位:像素) |
| `sy` | `number` | - | 曲线起点 Y 坐标(单位:像素) |
| `cp1x` | `number` | - | 第一控制点 X 坐标(影响曲线起始方向) |
| `cp1y` | `number` | - | 第一控制点 Y 坐标 |
| `cp2x` | `number` | - | 第二控制点 X 坐标(影响曲线结束方向) |
| `cp2y` | `number` | - | 第二控制点 Y 坐标 |
| `ex` | `number` | - | 曲线终点 X 坐标 |
| `ey` | `number` | - | 曲线终点 Y 坐标 |
| `curve` | `[sx, sy, cp1x, cp1y, cp2x, cp2y, ex, ey]` | - | 简写属性:一次性定义全部坐标点 |
---
## 完整示例集
### 示例 1:基础三次贝塞尔曲线
```tsx
// 曲线默认仅描边,不需要单独设置 stroke 属性
```
---
### 示例 2:虚线波浪线
```tsx
```
**曲线形态**:
- 起点 (50,200) → 第一控制点 (150,50)
- 第二控制点 (250,350) → 终点 (350,200)
- 形成"S"型波浪线
---
### 示例 3:动态流体效果
```tsx
import { ref } from 'vue';
const offset = ref(0);
// 每帧更新控制点位置
onTick(() => {
offset.value += 0.02;
});
;
```
---
## 控制点行为说明
### 控制点影响示意图
```typescript
/*
(cp1)
▲
|
(start)●━━╋━━━━━━━━━━━┓
┃ ┃
┃ (cp2) ┃
┃ ▼ ┃
┗━━━━━━━●━━(end)
*/
```
- **第一控制点** (`cp1`):控制曲线起始方向的弯曲程度
- **第二控制点** (`cp2`):控制曲线结束方向的弯曲程度
### 特殊形态案例
| 控制点布局 | 曲线形态描述 |
| ------------------------------------ | ----------------- |
| `cp1`靠近起点,`cp2`靠近终点 | 近似直线 |
| `cp1`与`cp2`对称分布 | 形成对称波浪 |
| `cp1`在起点正上方,`cp2`在终点正下方 | 创建垂直"S"型曲线 |
---
## 高级用法示例
### 复杂路径组合
```tsx
// 组合多条贝塞尔曲线形成花瓣造型
{Array.from({ length: 5 }).map((_, i) => (
))}
```
---
## 注意事项
1. **闭合路径**:
三次贝塞尔曲线默认不闭合,如需闭合需手动连接到起点:
```tsx
```
2. **控制点极值**:
当控制点距离起点/终点过远时可能产生剧烈弯曲:
```tsx
// 可能产生非预期锐角
```