| 1234567891011121314151617181920212223242526272829303132333435 | var Path = require("../Path");/** * 椭圆形状 * @module zrender/graphic/shape/Ellipse */var _default = Path.extend({  type: 'ellipse',  shape: {    cx: 0,    cy: 0,    rx: 0,    ry: 0  },  buildPath: function (ctx, shape) {    var k = 0.5522848;    var x = shape.cx;    var y = shape.cy;    var a = shape.rx;    var b = shape.ry;    var ox = a * k; // 水平控制点偏移量    var oy = b * k; // 垂直控制点偏移量    // 从椭圆的左端点开始顺时针绘制四条三次贝塞尔曲线    ctx.moveTo(x - a, y);    ctx.bezierCurveTo(x - a, y - oy, x - ox, y - b, x, y - b);    ctx.bezierCurveTo(x + ox, y - b, x + a, y - oy, x + a, y);    ctx.bezierCurveTo(x + a, y + oy, x + ox, y + b, x, y + b);    ctx.bezierCurveTo(x - ox, y + b, x - a, y + oy, x - a, y);    ctx.closePath();  }});module.exports = _default;
 |