javascript - 带按钮的 HTML5 干净 Canvas

标签 javascript html button html5-canvas

我有这段 javascript 代码,当我点击按钮时, Canvas 会被清除。

但是当我移动鼠标时, Canvas 会显示我之前写的内容,而且它不会以空白 Canvas 开始

单击按钮后如何从空白 Canvas 开始?

谢谢。

<!DOCTYPE html>
<html>
<body>

  <canvas id="myCanvas" width="200" height="100" style="border:1px solid #d3d3d3;">
  Your browser does not support the HTML5 canvas tag.</canvas>
  <div id="buttons">
      <input type="button" id="clear" value="Clear">
      <input type="button"  onClick="erase()" value="Erase">
  </div>



  <script>
    var canvas = document.getElementById("myCanvas");
    var ctx = canvas.getContext("2d");

      function getMousePos(canvas, evt) {
        var rect = canvas.getBoundingClientRect();
        return {
          x: evt.clientX - rect.left,
          y: evt.clientY - rect.top
        };
      }

      canvas.addEventListener('mousemove', 
                              function(evt){
                                  var mousePos = getMousePos(canvas, evt);
                                  ctx.clearRect(0, 0, canvas.width, canvas.height);
                                  ctx.strokeStyle = 'red';
                                  ctx.lineTo(mousePos.x,mousePos.y);
                                  ctx.stroke();
                              }

      );

      document.getElementById('clear').addEventListener('click', function(){
        ctx.clearRect(0, 0, canvas.width, canvas.height);
      }, false);


     function erase(){
        ctx.clearRect(0, 0, canvas.width, canvas.height);     
     }

  </script>

</body>
</html>

最佳答案

请记住使用 beginPath() 清除在使用 clearRect() 后仍然存在的路径,例如:

function(evt){
  var mousePos = getMousePos(canvas, evt);
  ctx.clearRect(0, 0, canvas.width, canvas.height);
  ctx.strokeStyle = 'red';

  ctx.beginPath();     // <- here
  //ctx.moveTo(x, y);  // you will probably also want this at some point

  ctx.lineTo(mousePos.x,mousePos.y);
  ctx.stroke();
}

关于javascript - 带按钮的 HTML5 干净 Canvas ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42742538/

相关文章:

c# - 鼠标结束时的按钮提示

javascript - 无法将我的 html 文档连接到 jquery

javascript - 为什么在第一个 Promise 解析之后执行链式 Promise 后排队的微任务而忽略链式 Promise?

javascript - 将鼠标悬停在文本上时显示字形链接

javascript - HTML/CSS/JS - 模态弹出窗口的叠加背景 - 问题

python - 使函数可调用的函数无法正常工作

javascript - 如何用 react 处理多个按钮的状态?

javascript - 在测试中使用模拟 ajax 调用的目的是什么?

javascript - 使用来自输入的链接填充 href

jquery - 如何删除博客小部件的白边距?