Как сохранить закругленный угол Rect при масштабировании в ткани JS - PullRequest
0 голосов
/ 07 февраля 2019

Я использую ткань JS версии 1.7.22.

Оригинальный объект:

enter image description here

Текущий результат:

enter image description here

Ожидаемый результат:

enter image description here

1 Ответ

0 голосов
/ 07 февраля 2019

Один из способов - наблюдать за scaling событиями и сбрасывать масштаб Rect на 1, изменяя вместо него width и height:

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>
...