javascript - JQuery/Javascript - 鼠标位置完全关闭

标签 javascript jquery html canvas

我正在尝试制作一个“绘图”应用程序,它允许用户通过将鼠标拖到 Canvas 上来绘制一些东西。

我想在用户拖动鼠标的位置绘制一个“像素”,但是:鼠标的位置与绘制“像素”的位置不同。 我在互联网上搜索过,但我不知道我的版本和他们的版本有什么区别。

图片:enter image description here

HTML

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Drawer</title>
    <script src="jquery-2.2.1.min.js"></script>
    <script src="scripting/draw.js"></script>
</head>
<body>
    <canvas id="drawGround" style="width: 500px; height: 500px; margin: 0 auto; border: 1px solid black;"></canvas>
</body>
</html>

代码:

$(document).ready(function() {

  var drawSize = 3;
  var canDrawCanvas = false;
  const canvasID = "#drawGround";

  document.onmouseup = function() {
    canDrawCanvas = false;
  };

  $(canvasID).mousedown(function() {
    canDrawCanvas = true;
  });
  $(canvasID).mousemove(function(event) {
    if (canDrawCanvas) handleDrawing(event);

  });

  function handleDrawing(mouseEvent) {
    var canvas = document.getElementById(canvasID.substring(1));
    var context = canvas.getContext('2d');
    context.fillRect(mouseEvent.pageX, mouseEvent.pageY, drawSize, drawSize);
  }

});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<canvas id="drawGround" style="width: 500px; height: 500px; margin: 0 auto; border: 1px solid black;"></canvas>

最佳答案

不应使用“样式”属性缩放 Canvas 对象,而应使用 Canvas 元素中的“宽度”和“高度”属性。

<canvas id="drawGround" width="500px" height="500px" style="margin: 0 auto; border: 1px solid black;"></canvas>

然后使用offsetXoffsetY 参数代替pageXpageY 来获取提示的位置鼠标:

function handleDrawing(mouseEvent) {
  var canvas = document.getElementById(canvasID.substring(1));
  var context = canvas.getContext('2d');
  context.fillRect(mouseEvent.offsetX, mouseEvent.offsetY, drawSize, drawSize);
}

关于javascript - JQuery/Javascript - 鼠标位置完全关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35919776/

相关文章:

javascript - 在悬停时更改拖放和可拖放区域内的可拖动颜色

html - 将播放按钮放在图像中

html - 在css中创建十字图像水印

Javascript 将 onmouseover 更改为单击

javascript - Ajax需要时间,因此得到错误的变量值

javascript - highchart json 数据点

javascript - 一旦选择了 5 个随机数,如何禁用所有剩余的数字

javascript - jQuery:在克隆的 parent 中寻找克隆的 child ?

javascript - 可拖动的 div : behaves like an image on second drag

php - AJAX调用成功但抛出未定义索引错误