Мне нужно иметь возможность рисовать ткань. Путь с использованием ткани freeDrawingBrush с определенным смещением от места, где мышь попадает на холст.
Например:
if canvas.getPointer () возвращает точку p = {x: 100, y: 100},
Я хочу, чтобы ткань нарисовала эту точку на newP = {x: p.x + 20, y: p.y + 20} (или как угодно);
Я не могу заставить это работать. Я пытался в течение нескольких дней безуспешно.
@Component({
private Brush: any;
private canvas:
constructor() {
this.Brush = fabric.util.createClass(fabric.PencilBrush, {
type: 'myBrush',
color: 'rgb(134, 10, 230)',
width: 16,
initialize: function(canvas) {
this.callSuper('initialize', canvas);
},
onMouseDown: function(pointer) {
this.callSuper('onMouseDown', pointer);
},
onMouseMove: function(pointer) {
this.callSuper('onMouseMove', pointer);
},
_render: function(ctx) {
this.callSuper('_render', ctx);
}
});
}
ngOnInit() {
this.canvas = new fabric.Canvas('myCanvas');
if (this.canvas.freeDrawingBrush) {
this.canvas.freeDrawingBrush = this.Brush;
}
canvas.on("mouse:down", (e) => {
let pointer = canvas.getPointer(),
point = { x: pointer.x + 20, y: pointer.y + 20 };
Brush.onMouseDown(point);
}
}
}
Работает только для первого нарисованного пути.