VINET,
Просто добавьте события мыши: над и мышь: из
canvas.on('mouse:over', function(e){
if (e.target.type == 'rect'){
e.target.set({strokeWidth: 5, stroke: 'red'});
}
canvas.renderAll();
});
canvas.on('mouse:out', function(e){
canvas.forEachObject(function(o){
o.set({strokeWidth: 0});
});
canvas.renderAll();
});
Проверить fiddle
UPDATE:
Если вы хотите, чтобы выделить каждую сторону отдельно, вы должны создать свой собственный ход для прямоугольников, как здесь:
function createPointsForLines(rectangle){
let points = [];;
var coordinates = rectangle.oCoords;
points.push([coordinates.tl.x,
coordinates.tl.y,
coordinates.tr.x,
coordinates.tr.y]);
points.push([coordinates.tr.x,
coordinates.tr.y,
coordinates.br.x,
coordinates.br.y]);
points.push([coordinates.br.x,
coordinates.br.y,
coordinates.bl.x,
coordinates.bl.y]);
points.push([coordinates.bl.x,
coordinates.bl.y,
coordinates.tl.x,
coordinates.tl.y]);
return points;
}
После этого нарисуйте эти штрихи как линии:
for (var i in points){
var line = new fabric.Line(points[i],{
originX: 'center',
originY: 'center',
strokeWidth: 10,
stroke: 'rgba(255,0,0,0)',
transparentCorners: false
});
canvas.add(line);
}
Обновлено fiddle
Спасибо за ваш ответ! Я пробовал этот метод, но это не совсем так. Необходимо сделать выбор из одного кадра. – VINET
Пожалуйста, см. Обновленный пост выше – Observer
Итак, для этого я планирую решить эту проблему. Но это решение не является оптимальным. Для этого решения необходимо связать область с объектами, требующими дополнительных вычислений. Вы не знаете, где эти элементы управления находятся в библиотеке? Я думаю, что где-то они могут быть изменены, и проблема решена. – VINET