Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/422.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在使用处理程序时使用缩放函数?_Javascript_Fabricjs - Fatal编程技术网

Javascript 如何在使用处理程序时使用缩放函数?

Javascript 如何在使用处理程序时使用缩放函数?,javascript,fabricjs,Javascript,Fabricjs,我正在开发一种注释工具,并使用多边形、多段线和边界框。 我想在不使用鼠标事件的情况下控制多边形中的缩放,以及 对于多边形,我已经采用了下面这样的处理程序——实际上,我想做的是在下面的代码中的处理程序中添加多边形的缩放函数 如果有人知道这件事,请告诉我 polyLinePositionHandler : function(dim,finalMatrix, object){ var x = object.points[this.pointIndex].x - object.pathOffse

我正在开发一种注释工具,并使用多边形、多段线和边界框。 我想在不使用鼠标事件的情况下控制多边形中的缩放,以及 对于多边形,我已经采用了下面这样的处理程序——实际上,我想做的是在下面的代码中的处理程序中添加多边形的缩放函数

如果有人知道这件事,请告诉我

polyLinePositionHandler : function(dim,finalMatrix, object){
    var x = object.points[this.pointIndex].x - object.pathOffset.x;
    var y = object.points[this.pointIndex].y - object.pathOffset.y;
    return fabric.util.transformPoint(
        { x : x, y : y, },
        fabric.util.multiplyTransformMatrices( object.canvas.viewportTransform, object.calcTransformMatrix() )
    );
},

actionHandler : function(eventData, transform, x, y){
    var polyline = transform.target,
    currentControl = polyline.controls[polyline.__corner],
    mouseLocalPosition = polyline.toLocalPoint( new fabric.Point(x,y), "center", "center"),
    polygonBaseSize = polyline._getNonTransformedDimensions(),
    size = polyline._getNonTransformedDimensions(0,0),
    finalPointPosition = {
        x : (mouseLocalPosition.x * polygonBaseSize.x) / size.x + polyline.pathOffset.x,
        y : (mouseLocalPosition.y * polygonBaseSize.y) / size.y + polyline.pathOffset.y
    };
    polyline.points[currentControl.pointIndex] = finalPointPosition;
    return true;
},

anchorWrapper : function(index, fn){
    return function(eventData, transform, x, y){
        var polyline = transform.target,
        absolutePoint = fabric.util.transformPoint({
            x : polyline.points[index].x - polyline.pathOffset.x,
            y : polyline.points[index].y - polyline.pathOffset.y,
        },
        polyline.calcTransformMatrix()
        ),
        actionPerformed = fn(eventData, transform, x, y),
        newDim = polyline._setPositionDimensions({});
        var polylineBaseSize = polyline._getNonTransformedDimensions();
        newX = (polyline.points[index].x - polyline.pathOffset.x) / polylineBaseSize.x,
        newY = (polyline.points[index].y - polyline.pathOffset.y) / polylineBaseSize.y;
        polyline.setPositionByOrigin(absolutePoint, newX+0.5, newY+0.5);
        return actionPerformed;
    };
},

您能否更具体地说明您正在努力实现的目标以及您遇到的问题/错误?现在这个问题还不是很清楚。@konrad我编辑了我的问题,请查看并让我知道您知道的内容。非常感谢。