Мне нужно нарисовать линии связи. Например, с помощью простых строк мне нужно нарисовать треугольник, прямоугольник и т. Д., И мне нужно соединить строки с их конечными точками. Будет здорово выделить круг, когда это возможно сделать соединение. В моем коде я могу рисовать строки (это похоже на полилинию), но я не могу подключить первую строку с последней. Я попытался сделать мышь: над и мышь: вне событий, но они не работают.Fabricjs соединяет линии при рисовании
Ссылка на мой код, например:
https://jsfiddle.net/5gLwL7d3/
Вот мой код:
<canvas id="c" width="500" height="470" style="border:1px solid #ccc"></canvas>
JavaScript
var canvas = new fabric.Canvas('c', { selection: false });
fabric.Object.prototype.originX = fabric.Object.prototype.originY = 'center';
var line, isDown, isOver;
var lines = [];
var id = 1;
canvas.on('mouse:down', function(o){
console.log("MOUSE:DOWN");
isDown = true;
var pointer = canvas.getPointer(o.e);
var points = [ pointer.x, pointer.y, pointer.x, pointer.y ];
line = new fabric.Line(points, {
strokeWidth: 9,
fill: 'red',
stroke: 'red',
originX: 'center',
originY: 'center'
});
canvas.add(line);
});
canvas.on('mouse:move', function(o){
if (!isDown) return;
var pointer = canvas.getPointer(o.e);
line.set({ x2: pointer.x, y2: pointer.y });
canvas.renderAll();
});
fabric.util.addListener(window,'keyup', function(e) {
console.log("KEYUP :: " + e.keyCode);
if (e.keyCode === 13) {
isDown = false;
}
});
canvas.on('mouse:over', function(e) {
//e.target.setFill('red');
isOver = true;
console.log("MOUSE:OVER");
console.log(e);
});
canvas.on('mouse:out', function(e) {
isOver = false;
console.log("MOUSE:OUT");
});
Спасибо!