Module: zrender/shape/tool/PathProxy

zrender/shape/tool/PathProxy

new require("zrender/shape/tool/PathProxy")()

shape/util/PathProxy.js, line 54

Path 代理,可以在buildPath中用于替代ctx, 会保存每个path操作的命令到pathCommands属性中 可以用于 isInsidePath 判断以及获取boundingRect

Author:
  • pissang (http://www.github.com/pissang)

Example

var SomeShape = function() {
        this._pathProxy = new PathProxy();
        ...
    }
    SomeShape.prototype.buildPath = function(ctx, style) {
        this._pathProxy.begin(ctx);
            .moveTo(style.x, style.y);
            .lineTo(style.x1, style.y1);
        ...
            .closePath();
    },
    SomeShape.prototype.getRect = function(style) {
        if (!style._rect) {
            // 这里必须要在 buildPath 之后才能调用
            style._rect = this._pathProxy.fastBoundingRect();
        }
        return this.style._rect;
    },
    SomeShape.prototype.isCover = function(x, y) {
        var rect = this.getRect(this.style);
        if (x >= rect.x
            && x <= (rect.x + rect.width)
            && y >= rect.y
            && y <= (rect.y + rect.height)
        ) {
            return area.isInsidePath(
                this._pathProxy.pathCommands, 0, 'fill', x, y
            );
        }
    }

Members

pathCommandsArray.<Object>

Path描述的数组,用于isInsidePath的判断

Methods

arc(cx, cy, r, startAngle, endAngle, anticlockwise){module:zrender/shape/util/PathProxy}

shape/util/PathProxy.js, line 205
Name Type Description
cx number
cy number
r number
startAngle number
endAngle number
anticlockwise boolean

begin(ctx){module:zrender/shape/util/PathProxy}

shape/util/PathProxy.js, line 130
Name Type Description
ctx CanvasRenderingContext2D

bezierCurveTo(x1, y1, x2, y2, x3, y3){module:zrender/shape/util/PathProxy}

shape/util/PathProxy.js, line 173
Name Type Description
x1 number
y1 number
x2 number
y2 number
x3 number
y3 number

closePath(){module:zrender/shape/util/PathProxy}

shape/util/PathProxy.js, line 234

fastBoundingRect(){Object}

shape/util/PathProxy.js, line 72

快速计算Path包围盒(并不是最小包围盒)

isEmpty(){boolean}

shape/util/PathProxy.js, line 246

是否没有Path命令

lineTo(x, y){module:zrender/shape/util/PathProxy}

shape/util/PathProxy.js, line 156
Name Type Description
x number
y number

moveTo(x, y){module:zrender/shape/util/PathProxy}

shape/util/PathProxy.js, line 143
Name Type Description
x number
y number

quadraticCurveTo(x1, y1, x2, y2){module:zrender/shape/util/PathProxy}

shape/util/PathProxy.js, line 188
Name Type Description
x1 number
y1 number
x2 number
y2 number