2017-02-06 3 views
0

Помогите установить стиль как стиль на картинке. В течение нескольких дней я пытаюсь использовать параметры, но не понимаю, как решить проблему.Как установить стиль в fabric.js

enter image description here

var rect = new fabric.Rect({ 
    left: 150, 
    top: 200, 
    originX: 'left', 
    originY: 'top', 
    width: 150, 
    height: 120, 
    angle: -10, 
    fill: 'rgba(255,0,0,0.5)', 
    transparentCorners: false 
    }); 

ответ

1

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

+0

Спасибо за ваш ответ! Я пробовал этот метод, но это не совсем так. Необходимо сделать выбор из одного кадра. – VINET

+0

Пожалуйста, см. Обновленный пост выше – Observer

+0

Итак, для этого я планирую решить эту проблему. Но это решение не является оптимальным. Для этого решения необходимо связать область с объектами, требующими дополнительных вычислений. Вы не знаете, где эти элементы управления находятся в библиотеке? Я думаю, что где-то они могут быть изменены, и проблема решена. – VINET

Смежные вопросы