Javascript 将rx和ry设置为非零值时,高度或宽度为负值时,织物js形状错误

Javascript 将rx和ry设置为非零值时,高度或宽度为负值时,织物js形状错误,javascript,fabricjs,Javascript,Fabricjs,我试图画圆角矩形,但当设置负宽度或负高度时,我得到了一个像这样的错误形状 如何在不考虑起点和绘制方向的情况下获得正确的形状(gif中的左上角形状) canvas.on('mouse:down', (e) => { const roundedRect = new fabric.Rect( { top: e.pointer.y, left: e.pointer.x, width: 0, height: 0,

我试图画圆角矩形,但当设置负宽度或负高度时,我得到了一个像这样的错误形状

如何在不考虑起点和绘制方向的情况下获得正确的形状(gif中的左上角形状)

canvas.on('mouse:down', (e) => {
    const roundedRect = new fabric.Rect( {
        top: e.pointer.y,
        left: e.pointer.x,
        width: 0,
        height: 0,
        stroke: 'black',
        strokeWidth: 3,
        rx: 10,
        ry: 10,
        fill: 'transparent',
        hasControls: false,
    });
    canvas.add(roundedRect);
    canvas.setActiveObject(roundedRect);
});
canvas.on('mouse:move', (e) => {
    const pointer = e.pointer;
    const activeObj = canvas.getActiveObject();
    let height = pointer.y - activeObj.top;
    let width = pointer.x - activeObj.left;
    activeObj.set({ height: height, width: width});
    activeObj.setCoords();
});

Fabric中不支持负宽度和高度值,这就是为什么会出现不可预测的行为。改用scaleX和scaleY,它们可以是负数。