如何在FabricJS中将画布设置为绘图模式后立即开始绘制路径?

时间:2017-09-12 14:45:32

标签: fabricjs

我正在尝试检测是否在鼠标按下事件中选择了某个对象,并且是否未选择任何对象来开始在结构中绘图。因此我不能将画布留在绘图模式中,但是一旦确定鼠标按下事件没有目标,就需要设置它。目前我已经尝试在画布上重新触发鼠标按下事件了:

this.canvas.on('mouse:down', function (e) {
        if(e.target === null){ //the event had no target
            this.isDrawingMode = true; //set the canvas to drawing mode
            this.trigger('mouse:down'); //retrigger mouse down event
    }});

但我没那么幸运。该事件被重新触发,但路径不会开始在画布上绘制。有没有人有任何想法?

1 个答案:

答案 0 :(得分:1)

如果您在鼠标按下之前处于绘图模式,则可以调用fabric将调用的函数。

请注意我插入的{if}条件!this.isDrawingMode或者你得到一个无限循环的递归。



var canvas = new fabric.Canvas('c');
canvas.add(new fabric.Rect({width: 50, height: 50}));
canvas.on('mouse:down', function(opt) {
  if (!opt.target && !this.isDrawingMode) {
    canvas.isDrawingMode = true;
    canvas._onMouseDownInDrawingMode(opt.e)
  }
})

<script src="https://cdnjs.cloudflare.com/ajax/libs/fabric.js/1.7.18/fabric.min.js"></script>
<canvas id="c" ></canvas>
&#13;
&#13;
&#13;