Цель: Центрирование объекта (по горизонтали и вертикали) внутри другого объекта (прямоугольника или группы) на canvas
с помощью Fabric.js
или с помощью Javascript, который сохраняет исходное соотношение сторон объекта таким же, нотакже не превышать пропорции ширины / высоты родительского объекта?
Родительский объект (прямоугольник или группа) не будет центрирован на элементе canvas
.
Вот код, который у меня есть до сих пор: https://stackblitz.com/edit/angular-my8hky
Пока что app.component.ts
:
canvas: fabric.Canvas;
ngOnInit() {
this.canvas = new fabric.Canvas('canvas');
var rect = new fabric.Rect({
left: 100,
top: 50,
width: 300,
height: 200,
fill: '#eee'
});
this.canvas.add(rect);
fabric.Image.fromURL('https://angular.io/assets/images/logos/angular/logo-nav@2x.png', (img) => {
let bounds = rect.getBoundingRect();
let oImg = img.set({
left: bounds.left,
top: bounds.top,
width: rect.width
}).scale(1);
this.canvas.add(oImg).renderAll();
});
}
Новый объект не только центрируется не по вертикали, но и не центрируется по горизонтали, если высота объекта прямоугольника уменьшается (дляпример для высоты 50px
.
Я понимаю, что я объявляю только ширину внутреннего объекта изображения равной ширине границы родительского прямоугольника.
Текущее решение:
Родительский прямоугольник width: 300
и height: 200
:
Родительский прямоугольник width: 300
и height: 50
:
Желаемое решение:
Родительский прямоугольник width: 300
и height: 200
:
Родительский прямоугольник width: 300
и height: 50
:
Кто-нибудь может помочь?