用实时测量fabric.js画线

用户名

在绘制带有度量的线时,Fabric.Js中存在此问题。

当我拖动线条时,它必须在线条的末端或中间显示变化的测量值。

我现在可以测量线的长度,但是以错误的方式显示测量值。请帮忙。谢谢..

这是小提琴的链接:http : //jsfiddle.net/ydtt94zm/

$(function(){
    var line, isDown;
    var arr = new Array();
    var startx = new Array();
    var endx = new Array();
    var starty = new Array();
    var endy = new Array();
    var temp = 0;
    var graphtype; trigger = "1";

    var canvas = this.__canvas = new fabric.Canvas('canvas', {  hoverCursor: 'pointer',selection: false});     
    fabric.Object.prototype.transparentCorners = false;             

    canvas.on('mouse:down', function(o){            
        if(trigger=="1"){
             isDown = true;
             var pointer = canvas.getPointer(o.e);

             var points = [pointer.x, pointer.y, pointer.x, pointer.y];
             startx[temp] = pointer.x;
             starty[temp] = pointer.y;
             line = new fabric.Line(points, {
                 strokeWidth: 2,            
                 stroke: 'red',
                 originX: 'center',
                 originY: 'center'                  
             });
             canvas.add(line);
        }else{      
            canvas.forEachObject(function(o){ 
                o.setCoords(); 

            });
        }           
    });

    canvas.on('mouse:move', function(o){
        if (!isDown) return;
        var pointer = canvas.getPointer(o.e);
        line.set({ x2: pointer.x, y2: pointer.y });

        endx[temp] = pointer.x;
        endy[temp] = pointer.y;     

        if(trigger=="1"){
            var px = Calculate.lineLength(startx[temp], starty[temp], endx[temp], endy[temp]).toFixed(2);   
            var text = new fabric.Text('Length ' + px, { left: endx[temp], top: endy[temp], fontSize: 12 });    

            canvas.add(text);   
            if(canvas.getActiveObject().get('type')==="text")
            {
                canvas.remove(text);
            }               
        }

        canvas.renderAll();
    }); 


    canvas.on('mouse:up', function(o){
         var pointer = canvas.getPointer(o.e);          
         isDown = false;            

    });

    canvas.on('mouse:over', function(e) {           
        e.target.setStroke('blue');         
        canvas.renderAll();
    });

    canvas.on('mouse:out', function(e) {            
        e.target.setStroke('red');
        canvas.renderAll();
    });         

    $("#selec").click(function(){           
        if(trigger == "1"){
            trigger = "0";              
        }else{
            trigger = "1";
        }           
    });

    var Calculate={
        lineLength:function(x1, y1, x2,y2){//线长    
            //console.log(x1 + ", "+ y1 +", " + x2 + ", " + y2);
            //clearRect(x2, y2);
            return Math.sqrt(Math.pow(x2*1-x1*1, 2)+Math.pow(y2*1-y1*1, 2));
        }
    }   


});
瑞斯

您需要先删除文本元素,然后才能重新添加它。

canvas.remove(text);

检查此更新的提琴手

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章