【发布时间】:2019-08-24 12:34:53
【问题描述】:
我希望在 KonvaJS 线路上进行转换。我已经完成了所有工作,并且可以缩放对象,但是我希望它可以调整线的点,而不是在我抓住调整大小手柄时设置 scale 属性。也会考虑在路径中执行此操作。
所以目标是我的对象 scaleX 和 scaleY 始终为 1,并且只是缩小的点。
这可能吗?
【问题讨论】:
标签: konvajs
我希望在 KonvaJS 线路上进行转换。我已经完成了所有工作,并且可以缩放对象,但是我希望它可以调整线的点,而不是在我抓住调整大小手柄时设置 scale 属性。也会考虑在路径中执行此操作。
所以目标是我的对象 scaleX 和 scaleY 始终为 1,并且只是缩小的点。
这可能吗?
【问题讨论】:
标签: konvajs
您只需将比例应用于points 属性:
shape.on('transformend', () => {
const oldPoints = shape.points();
const newPoints = [];
for(var i = 0; i< oldPoints.length / 2; i++) {
const point = {
x: oldPoints[i * 2] * shape.scaleX(),
y: oldPoints[i * 2 + 1] * shape.scaleY(),
}
newPoints.push(point.x, point.y);
}
shape.points(newPoints);
shape.scaleX(1);
shape.scaleY(1);
layer.draw();
})
【讨论】:
shape.getAbsoluteTransform().point({}) 改进了您的示例并将x 和y 位置重置为0。在此示例中,newPoints 是调整大小形状的点的精确表示:jsbin.com/gojiwuwaqe/edit?html,js,output