mh-two-thousand-and-two
2024-03-25 b8c93990f3fa5e50a8aca16bdc9c2758168aa0fd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
/**
 * 圆形
 */
 
import Path, { PathProps } from '../Path';
 
export class CircleShape {
    cx = 0
    cy = 0
    r = 0
}
 
export interface CircleProps extends PathProps {
    shape?: Partial<CircleShape>
}
class Circle extends Path<CircleProps> {
 
    shape: CircleShape
 
    constructor(opts?: CircleProps) {
        super(opts);
    }
 
    getDefaultShape() {
        return new CircleShape();
    }
 
    buildPath(ctx: CanvasRenderingContext2D, shape: CircleShape) {
        // Use moveTo to start a new sub path.
        // Or it will be connected to other subpaths when in CompoundPath
        ctx.moveTo(shape.cx + shape.r, shape.cy);
        ctx.arc(shape.cx, shape.cy, shape.r, 0, Math.PI * 2);
    }
};
 
Circle.prototype.type = 'circle';
 
export default Circle;