为什么画布中的鼠标坐标是错误的
Why the coordinates of mouse in canvas are wrong?
>我打算在画布上用鼠标光标自由绘制。我的代码似乎用颜色完成了这部分,但是当我绘制时,它没有采用我在画布中当前鼠标位置的确切坐标。
<body>
<canvas id="canvas" style=" width: 400; height: 400px; background-color:yellow; position: absolute; margin-left:100px; margin-top:30px"></canvas>
<script>
var Color = 'blue';
var Canvas = document.getElementById('canvas');
var Context = Canvas.getContext('2d');
$("canvas").on("mousemove",function(e){
X = e.clientX - canvas.offsetLeft;
Y = e.clientY - canvas.offsetTop;
Context.strokeStyle = Color;
Context.lineWidth = 3;
Context.lineCap = 'round';
Context.beginPath();
Context.moveTo(X,Y);
Context.lineTo(X,Y);
Context.fillRect(X,Y, 3,3)
Context.stroke();
Context.closePath();
});
</script>
</body>
https://jsfiddle.net/93L8mLnf/
我在console.log
坐标中进行了测试,它们是直立的。我很困惑..
您需要将
画布的尺寸与 DOM 元素同步。添加这个:
Canvas.width = Canvas.clientWidth;
Canvas.height = Canvas.clientHeight;
示范
您还会注意到画布不再模糊。
请注意,每次画布 DOM 元素更改大小时都必须执行此操作(通常是因为窗口大小已调整),因此当您的元素大小不是固定大小时,您应该在窗口resize
事件上绑定事件处理程序以再次执行该同步(并且通常重新绘制内容)。
您必须通过画布属性添加宽度和高度见小提琴
<canvas id="canvas" style="background-color:yellow;" width="250" height="250"></canvas>
相关文章:
- EaseJS拖放;放下(动画CC)电影剪辑的鼠标坐标
- Node.js v6.2.0类扩展不是函数错误
- Jquery菜单操作不稳定,定位不正确,存在一般错误
- document.open/document.write没有正确地清除chrome中的文档——这是chrome的错误吗
- 试图在引导模式内动态生成图表,得到offsetWidth错误
- 为什么会出现错误;未捕获的类型错误:undefined不是函数;
- 我如何修复包含在captcha的addthis中的错误
- ontouchend-ios返回错误的坐标
- 断言错误:断言失败:坐标数组的长度应与步幅匹配
- Amcharts-地图:自定义地图上的错误坐标(纬度/经度)(罗马尼亚县级)
- 谷歌地理编码器返回错误的地址坐标
- jQuery UI:Y 鼠标在放置可拖动对象时坐标错误
- 为什么画布中的鼠标坐标是错误的
- Jquery弹出2许多警报和错误的坐标
- Gnuplot:网站上嵌入的交互式SVG图形在缩放时显示错误的鼠标坐标
- Nokia Here地图错误时,建立一个路线与许多坐标
- 将元素拖放到iframe中.可降区域坐标错误,碰撞错误
- 坐标转换javascript库Pro4js错误结果
- Javascript谷歌地图坐标,parseFloat'坐标'+随机数错误
- 画布填充矩形有错误的 X 坐标