ICanvas - 图形系统
IStar
星形图形类,用于绘制星形图案。
属性
继承自 Shape 的所有属性,并包含以下特定属性:
| 属性名 | 类型 | 默认值 | 说明 |
|---|---|---|---|
numPoints | number | 5 | 星的角数量 |
innerRadius | number | 16 | 内圆半径 |
outerRadius | number | 30 | 外圆半径 |
type | string | "IStar" | 图形类型标识 |
方法
构造函数
typescript
constructor(config: IShapeOptional, canvas: ICanvas)config: 可选的配置对象canvas: 画布实例
设置方法
setInnerRadius(value: number): IStar
设置内圆半径
value: 内圆半径值- 返回值: 当前IStar实例
setOuterRadius(value: number): IStar
设置外圆半径
value: 外圆半径值- 返回值: 当前IStar实例
setNumPoints(value: number): IStar
设置星的角数量
value: 角数量- 返回值: 当前IStar实例
setWidth(value: number): IStar
设置宽度(会同时更新外圆半径和高度)
value: 宽度值- 返回值: 当前IStar实例
setHeight(value: number): IStar
设置高度(会同时更新外圆半径和宽度)
value: 高度值- 返回值: 当前IStar实例
继承方法
继承自 Shape 的所有方法,包括:
draw(ctx: CanvasRenderingContext2D): 绘制星形isPointInPath(x: number, y: number, shapeId: string): boolean: 检测点是否在星形内getBoundRect(): IShapeBoundRect: 获取边界矩形
使用示例
typescript
// 创建一个五角星
const star = new IStar({
x: 100,
y: 100,
numPoints: 5,
innerRadius: 20,
outerRadius: 40,
fill: "#ff0000",
stroke: "#000000",
strokeWidth: 2
}, canvas);
// 添加到画布
canvas.addShape(star);
// 修改星形属性
star.setNumPoints(6)
.setInnerRadius(15)
.setOuterRadius(50)
.setFill("#00ff00")
.setStroke("#ff0000");
// 创建六角星
const sixPointStar = new IStar({
x: 200,
y: 100,
numPoints: 6,
innerRadius: 25,
outerRadius: 45,
fill: "#0000ff",
stroke: "#ffffff",
strokeWidth: 1
}, canvas);注意事项
- 星形从垂直向上开始绘制
- 支持填充和描边两种渲染模式
- 点击检测基于星形的复杂几何形状
- 边界矩形基于外圆半径计算
- 支持旋转和缩放变换
- 内圆半径必须小于外圆半径
