javascript - onmouse Canvas HTML5

标签 javascript html canvas

我试图在 Canvas 上绘制鼠标的路径,但我不知道出了什么问题,但它没有绘制任何东西。它可以与 context.fillRect() 配合使用,但不能与 ImageData 配合使用。这是我的代码:

<!DOCTYPE HTML>
<html>
  <head>
  </head>
  <body>
    <canvas id="myCanvas" width="600" height="600" style=" border-style: solid;"></canvas>
    <script>

        var canvas = document.getElementById('myCanvas');
        var context = canvas.getContext('2d');
        var canvasWidth = canvas.width;
        var canvasHeight = canvas.height;
        var canvasData = context.getImageData(0, 0, canvasWidth, canvasHeight);

        function drawPixel(x, y) {
            var index = (x + y * canvasWidth) * 4;

            canvasData.data[index] = 0; //Red
            canvasData.data[index + 1] = 255; //Green
            canvasData.data[index + 2] = 0; //Blue
            canvasData.data[index + 3] = 1; //Alpha
        }

        function updateCanvas() {
            context.putImageData(canvasData, 0, 0);
        }

      function getMousePos(canvas, evt) {
        var rect = canvas.getBoundingClientRect();
        return {
          x: Math.round((evt.clientX-rect.left)/(rect.right-rect.left)*canvas.width),
          y: Math.round((evt.clientY-rect.top)/(rect.bottom-rect.top)*canvas.height)
        };
      }

      canvas.addEventListener('mousemove', function(evt) {
        var mousePos = getMousePos(canvas, evt);
        drawPixel(mousePos.x,  mousePos.y);
        updateCanvas();
      }, false);
    </script>
  </body>
</html>

最佳答案

你会想使用

canvasData.data[index + 3] = 255;

而不是

canvasData.data[index + 3] = 1;

虽然 Canvas fillStyle 使用 0-1 之间的 alpha 值,但当您想要实际更新 Canvas 的原始数据时,alpha 值的范围是 0 到 255 之间。

关于javascript - onmouse Canvas HTML5,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26962949/

相关文章:

javascript - jquery slidedown隐藏元素onclick

php - 如何重新映射数组以将其保存到夫妇

javascript - 带 Raphaeljs 的方形模拟时钟

javascript - Javascript 对象中的函数方法

javascript - 如何在css或sass中获取子div的数量

html - 网站在 IE7 中看起来正常,但在其他 IE 中不正常

javascript - Canvas drawImage 在本地运行时抛出 INDEX_SIZE_ERR,而不是从网络运行

javascript - 在Electron应用程序中最有效的流视频方法? (getUserMedia?)

javascript - 动态访问方法中的 Controller 变量

image - HTML Canvas 剪辑区域 - 上下文恢复?