javascript - HTML5 JS fillRect() 奇怪的行为

标签 javascript html html5-canvas

我在使用 fillrect(x, y, width, height) 时遇到了两个奇怪的问题。

  1. 正在将“高度”的值乘以二

  2. X 和 y 应该设置为鼠标位置,但矩形偏离了左下角,并且随着鼠标移动到左下角而变得更远。

此代码来自一个视频教程,该代码似乎适用于此人和视频以及其他所有人,因为没有人评论过遇到同样的问题。不管怎样,这里是代码:

function doFirst(){
    canv = document.getElementById('canvas');
    canvas = canv.getContext('2d');

    document.addEventListener("mousemove", onMouseMove, false);
}

function onMouseMove(e){
    canvas.clearRect(0, 0, canv.width, canv.height);
    var x = e.clientX;
    var y = e.clientY;
    canvas.fillRect(x, y, 50, 50);
}

window.addEventListener("load", doFirst, false);

我想也许我错过了教程中的一个步骤,在反复检查之后我决定将它简化为只绘制一个没有鼠标监听器的矩形,但 Canvas 仍然以 2 倍的高度和大约 2 倍的 y 绘制它位置。

function doFirst(){
    canv = document.getElementById('canvas');
    canvas = canv.getContext('2d');

    canvas.fillRect(10, 10, 50, 50);
}

window.addEventListener("load", doFirst, false);

前几天我刚开始玩 HTML5 canvas 时,fillRect 函数工作正常,那么发生了什么事呢?我是怎么弄坏的?

最佳答案

我相信这是因为您试图使用 CSS 设置 Canvas 的宽度和高度:

<!--Sets size of the canvas on the page-->
<canvas id="canvas" style="width:500px; height:500px;"></canvas>

相反,使用这个:

<!--Sets drawing surface size-->
<canvas id="canvas" width="500" height="500"></canvas>

“宽度”和“高度”属性表示绘图表面的大小,默认情况下为 300x150。设置 Canvas 的 CSS 宽度和高度将扩大或缩小绘图表面,但不会改变表面的像素数。 fillRect 需要 以“绘图表面”像素而不是“HTML 页面像素”为单位的坐标。

关于javascript - HTML5 JS fillRect() 奇怪的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13557429/

相关文章:

javascript - 如何找到突然出现的 element.style 的根本原因?

javascript - 找不到 Nuxt + Netlify Forms 自定义成功页面

javascript - 为什么以下 Facebook 分享按钮没有打开弹出窗口?

php - 无法通过 ajax 调用检索 $_POST 值

javascript - 将 SVG 转换为数据 URI 在 Firefox 中不起作用

javascript - 是否可以通过 Web 控制台切换这些 js 选项卡?

html - Hash(#) 链接导致内容跳转 - 为什么?

javascript - 完成某项操作后,逐一显示 ajax 进程

javascript - 使用 JS 和 Canvas 创建网站构建器

javascript - 为什么在 FabricJS 中没有任何缩进的靠近放置的对象彼此之间有一个空格