Поэтому я хотел рисовать прямоугольники на холсте на основе координат, полученных из внешней системы, которая использует координаты (x1,y1) (вверху слева) и (x2,y2) (внизу справа) для рисования прямоугольника, тогда как в Fabric.js это немного по-другому, например, используя свойства top и left, я попытался сделать это с помощью aCoords и написал этот код:
addRect() {
let square = new fabric.Rect({
stroke: 'yellow',
noScaleCache: false,
strokeWidth: 10,
strokeUniform: true,
fill: 'rgba(0,0,0,0.2)',
flipX: true,
});
console.info(square.getCoords());
square.set("aCoords", { tl: new fabric.Point(100, 2), br: new fabric.Point(1, 2), tr: new fabric.Point(1, 2), bl: new fabric.Point(1, 2) });
this.canvas.add(square);
}
Кажется, это не работает, что я упускаю?
Хотя, прочитав справку по API на Fabricjs.com, я не уверен, но после небольшого изучения кода я почти уверен, что aCoords
просто служит геттером. Таким образом, вы не можете изменить внешний вид фигуры, используя это свойство.
Вместо этого вы обновляете свойства top
, left
, width
и height
по отдельности.
Вот пример:
(function() {
var canvas = this.__canvas = new fabric.Canvas('c');
fabric.Object.prototype.transparentCorners = false;
let square = new fabric.Rect({
stroke: 'yellow',
noScaleCache: false,
strokeWidth: 10,
strokeUniform: true,
fill: 'rgba(0,0,0,0.2)',
flipX: true,
});
canvas.add(square);
let x1 = 5;
let y1 = 25;
let x2 = 105;
let y2 = 55;
square.set("top", y1);
square.set("left", x1);
square.set("width", (x2 - x1));
square.set("height", (y2 - y1));
})();
<script src = "https://cdnjs.cloudflare.com/ajax/libs/fabric.js/4.2.0/fabric.min.js "></script>
<canvas id = "c"></canvas>
Нет проблем, Али, рад, что смог помочь! " = "
Спасибо, я только что понял, что этот метод тоже будет работать!