Javascript 如何使用我的代码让鼠标悬停在带有事件侦听器的html画布上绘制?https://jsfiddle.net/dannixx/d0p0j8cL/

Javascript 如何使用我的代码让鼠标悬停在带有事件侦听器的html画布上绘制?https://jsfiddle.net/dannixx/d0p0j8cL/,javascript,html,canvas,Javascript,Html,Canvas,如何使用我的代码让鼠标悬停在带有事件侦听器的html画布上绘制? jifiddle文件,我希望能够用鼠标在画布上画线 帆布 #游说{ 边框:点着的3件黑色; 背景颜色:蓝色; } window.onload=函数(){ var theCanvas=document.getElementById(“Canvas1”); if(canvas&&document.getContext(“2d”)){ var ctx=canvas.getContext(“2d”) 如果(ctx){ ctx.fillS

如何使用我的代码让鼠标悬停在带有事件侦听器的html画布上绘制? jifiddle文件,我希望能够用鼠标在画布上画线


帆布
#游说{
边框:点着的3件黑色;
背景颜色:蓝色;
}
window.onload=函数(){
var theCanvas=document.getElementById(“Canvas1”);
if(canvas&&document.getContext(“2d”)){
var ctx=canvas.getContext(“2d”)
如果(ctx){
ctx.fillStyle=“浅蓝色”;
ctx.fillRect(0,0 ctx.canvas.width,ctx.canvas.height)
}
} 
}
纳瓦斯
前


下面是一个简单的示例脚本(使用笔划方法)用于在画布上绘制:

HTML:

<canvas id="can1"></canvas>
JavaScript:

var can = document.getElementById("can1");
var canCtx = can.getContext("2d");
var sx = 0, sy = 0;
var clicked = false;
function _left(e){
    return e.pageX - can.offsetLeft;
}
function _top(e){
    return e.pageY - can.offsetTop;
}
function _draw(e, sx, sy){
    var x = _left(e);
    var y = _top(e);
    canCtx.moveTo(sx, sy);
    canCtx.lineTo(x, y);
    canCtx.strokeStyle="red";
    canCtx.stroke();
}
can.addEventListener("mousedown", function(e){
    sx = _left(e);
    sy = _top(e);
    _draw(e, sx, sy);
    clicked = true;
}, false);
can.addEventListener("mousemove", function(e){
    if(clicked == true){
        _draw(e, can);
    }
}, false);
addEventListener("mouseup", function(){
    clicked = false;
}, false);

下面是一个非常简单的示例,使用onmousemove侦听器更新新的鼠标坐标,并从以前的坐标到新坐标绘制一条线。跑过去看看

var x=null;
var y=null;
var c=null;
var-ctx=null;
函数getPos(e){
//如果是第一次调用事件侦听器,则将x和y设置为新的鼠标坐标
如果(x==null){
x=e.clientX;
y=e.clientY;
}
//否则,从上一点(x,y)绘制到新坐标(e.clientX,e.clientY)。
ctx.beginPath();
ctx.moveTo(x,y);
ctx.lineTo(e.clientX,e.clientY);
ctx.stroke();
x=e.clientX;
y=e.clientY;
}
window.onload=函数(){
c=document.getElementById(“Canvas1”);
ctx=c.getContext(“2d”);
}

您的代码不包含任何绘制线函数,因此很难说您做错了什么。代码所做的就是绘制画布。你能具体解释一下你不明白的地方吗?要实现此解决方案,您需要做的就是将事件侦听器添加到画布元素,并添加我编写的内容。这是我的代码,当鼠标移动到框上时,您能否使其显示一条黑线,谢谢工作谢谢,我明天的学校作业有东西要交。当作业结束时,我无法让它划清界限。你能告诉我我做错了什么吗?这是我的密码
#can1 {
    border:dashed 3px #000;
}
var can = document.getElementById("can1");
var canCtx = can.getContext("2d");
var sx = 0, sy = 0;
var clicked = false;
function _left(e){
    return e.pageX - can.offsetLeft;
}
function _top(e){
    return e.pageY - can.offsetTop;
}
function _draw(e, sx, sy){
    var x = _left(e);
    var y = _top(e);
    canCtx.moveTo(sx, sy);
    canCtx.lineTo(x, y);
    canCtx.strokeStyle="red";
    canCtx.stroke();
}
can.addEventListener("mousedown", function(e){
    sx = _left(e);
    sy = _top(e);
    _draw(e, sx, sy);
    clicked = true;
}, false);
can.addEventListener("mousemove", function(e){
    if(clicked == true){
        _draw(e, can);
    }
}, false);
addEventListener("mouseup", function(){
    clicked = false;
}, false);