画布 - 元素叠加

时间:2015-11-26 16:20:25

标签: javascript svg html5-canvas fabricjs

我需要构建一些画布应用程序,但形状是不规则的,元素彼此重叠。我使用 fabric.js 作为画布并导入SVG文件来绘制元素,但我无法检测到正确的悬停对象。

以下是示例:

我想在鼠标悬停时检测到它的形状是否超出形状。

Sketch 1

它在我的画布上是如何实际的(红线角在画布上是不可见的)

Sketch 2

Example code from Fabric.js

1 个答案:

答案 0 :(得分:4)

您必须使用fabricjs的“perPixelTargetFind”属性。

这将准确地检查鼠标在对象上。 如果有图形,它将触发目标,否则不会。

var canvas = new fabric.Canvas('canvas');
canvas.perPixelTargetFind = true;
canvas.add(new fabric.Circle({ radius: 30, fill: 'green', top: 50, left: 100 }));
canvas.add(new fabric.Circle({ radius: 30, fill: 'green', top: 100, left: 200 }));
  
canvas.on('mouse:over', function(e) {
  e.target.setFill('red');
  canvas.renderAll();
});

canvas.on('mouse:out', function(e) {
  e.target.setFill('green');
  canvas.renderAll();
});
<script src="http://fabricjs.com/lib/fabric.js"></script>
<canvas id='canvas' width="550" height="550" style="border:#000 1px solid;"></canvas>