javascript - 如何在fabric.js中设置样式

标签 javascript html canvas web fabricjs

帮助设置样式为图片中的样式。几天来,我尝试了这些选项,但不明白如何解决问题。

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
  });

最佳答案

VINET,

只需添加事件 mouse:over 和 mouse:out

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

更新:

如果您想分别突出显示每一侧,则必须为矩形创建自己的笔划,如下所示:

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

关于javascript - 如何在fabric.js中设置样式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42062861/

相关文章:

javascript - select2.js - 如何对齐选项元素内的两个项目

HTML - 卡片文本不换行

jquery - Bootstrap Datepicker 不显示/

html - 如何删除对表单域的关注

javascript - 使用闭包模拟私有(private)方法与对象中的公共(public)方法

javascript - 如何在javascript中找到学位的sinh值

javascript - 当 Meteor Blaze 订阅准备就绪时加载功能?

javascript - Python toDataUrl 等效项

animation - 如何设置 EaselJS 图形和形状的 z-index

javascript - 如何向html5 Canvas 添加无限数量的图像?