代码之家  ›  专栏  ›  技术社区  ›  Arcath

在画布上的鼠标位置画一个十字,不要持续

  •  0
  • Arcath  · 技术社区  · 16 年前

    我将此绑定到画布的mousemove事件:

    function(e){        
        var contDiv = $('#current_system_map'); 
        var offset = contDiv.offset();
        x = e.clientX-offset.left;
        y = e.clientY-offset.top;
        context.beginPath();
        context.moveTo(0,y);
        context.lineTo(595,y);
        context.moveTo(x,0);
        context.lineTo(x,595);
        context.strokeStyle = "rgb(255,255,255)";
        context.stroke();   
    }
    

    4 回复  |  直到 16 年前
        1
  •  1
  •   Vivix    14 年前

    http://jsfiddle.net/PgKEt/2/ 这是我能做的最好的。

    另外,如果你有任何检测,比如mousedown之类的,它必须在顶部的任何画布上,否则它将不再检测到它们。

        2
  •  0
  •   andrewmu    16 年前

    通常,如果你在画布上画一些东西,你将不得不重新绘制画布内容来删除它。我建议您使用一个图像元素作为一个光标,并将其绝对放在

    或者你可以尝试旧的技巧,在画布上用 globalCompositeOperation='xor' ,然后在同一位置再次绘制以删除它。之后你需要恢复 globalCompositeOperation source-over

        3
  •  0
  •   Corey Trager    15 年前

    这种方法在firefox3.6.8中运行得足够快,可以在mousemove事件中使用。在绘制十字准线之前保存图像,然后将其还原为擦除:

    savedImage = new Image()
    savedImage.src = canvas.toDataURL("image/png")
    

    要还原的:

    ctx = canvas.getContext('2d')
    ctx.drawImage(savedImage,0,0)
    
        4
  •  0
  •   Guido    15 年前

    如果您不想持久地存储它,还可以查看SVG。