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我编辑了我的问题,请查看并让我知道您知道的内容。非常感谢。