画布填充矩形有错误的 X 坐标
Canvas fillRect has wrong X coordinate
我正在尝试创建一个javascript函数,该函数将为光标下方的画布像素着色。当它运行时,彩色像素显示在浏览器的左边缘,尽管它们位于正确的垂直位置。以下是我的函数:
function writecolor(event) {
var canvas = document.getElementById("colcan");
var ctx = canvas.getContext("2d");
var stylestr;
var permuda = "0123456789ABCDEF";
var os = $("#colcan").offset();
var x= event.X-os.left;
var y= event.clientY-os.top;
console.log(x);
var str = "#";
for (x=0; x<6;x++) {
str += permuda.charAt(Math.floor(Math.random()*16));
}
ctx.fillStyle = str;
ctx.fillRect(x,y,1,1);
}
function setdim() {
var canv = document.getElementById("colcan");
canv.height=$(window).height();
canv.width=$(window).width();
}
$(document).ready(function() {
setdim();
$(window).on("resize", function() {setdim()});
$("#colcan").on("mousemove", function(event) { writecolor(event)});
});
我可以从控制台上看出鼠标移动时正在读取正确的 X 坐标。我一直无法弄清楚为什么像素没有出现在正确的水平位置。这是一个jsfiddle:https://jsfiddle.net/xt87kb2q/
在控制台中,我将 x 坐标设置为 NaN
没有"event.x"
你需要做"event.clientX"来获取X坐标
还有一件事您首先定义存储值的 var x,接下来,您正在运行一个 for 循环,X 的值是 6,这就是事情没有解决的原因。
如果在绘制画布之前控制台 x 的值,您可以看到它始终在打印 6。并且您正在运行一个 for 循环直到 6....因此,对于每个鼠标移动,您都会得到错误的 X。
相关文章:
- 回复'js'仅当请求有错误时(否则使用html)
- 表单已发送,但验证有错误
- 如果文件不存在,fs.watch是否有错误处理程序
- Meteor上有错误的同步问题
- 表单验证:如果有错误,不要't使手风琴动起来
- 画布中的 X 和 Y 坐标有什么问题
- 我有错误文档.注册元素未被细化
- 如何转换为特定于 json 的类 c#?我有错误
- 如果当前输入有错误或警告,则禁用所有下一个表单输入字段
- 通过有错误的 Ajax-Request 打印出 HTML 会阻止进一步的 JS 工作
- 脸书应用程序有错误
- XDomainRequest 总是有错误
- HTML5 Canvas游戏有错误,点击时第一个拼图块会变成不同的块
- Page_ClientValidate返回 false,但没有一个验证器有错误
- 为什么画布中的鼠标坐标是错误的
- 量角器由中继器命令中是否有错误
- Jquery 验证器 - 表单被保存但有错误
- 任何人看到我的重置功能有错误
- 现在我有错误“;ReferenceError:项未定义“;不知道如何测试我的dataService
- 画布填充矩形有错误的 X 坐标