在 fabric js 中缩放时如何保持 Rect 的圆角

How to maintain rounded corner of Rect when scaling in fabric js

我正在使用 fabric js 版本 1.7.22。

原始对象:

当前结果:

预期结果:

一种方法是监视 scaling 事件并将 Rect 的比例重置为 1,改为修改其 widthheight

const canvas = new fabric.Canvas('c')

const rect = new fabric.Rect({
  left: 10,
  top: 10,
  width: 100,
  height: 100,
  fill: 'blue',
  rx: 10,
  ry: 10,
  objectCaching: false,
})

rect.on('scaling', function() {
  this.set({
    width: this.width * this.scaleX,
    height: this.height * this.scaleY,
    scaleX: 1,
    scaleY: 1
  })
})

canvas.add(rect).renderAll()
canvas {
  border: 1px solid red;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/fabric.js/1.7.22/fabric.js"></script>
<canvas id="c" width="300" height="250"></canvas>