Blame view

node_modules/zrender/lib/graphic/shape/Ellipse.js 861 Bytes
aaac7fed   liuqimichale   add
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
  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;