javascript - clearRect 不清除 Canvas

标签 javascript canvas

我正在尝试在 Canvas 中绘制矩形,用户单击该点并移动鼠标,将绘制矩形,完成后只剩下一个矩形,即最后一个。然而使用

let canvas = document.querySelector("canvas"), ctx = canvas.getContext("2d");
canvas.addEventListener("mousedown",function(event){
    x_ = event.pageX - this.offsetLeft;
    y_ = event.pageY - this.offsetTop;  
    canvas.addEventListener("mousemove",function(event){
        xmax = event.pageX - this.offsetLeft;
        ymax = event.pageY - this.offsetTop;
        console.log(x_,y_,xmax,ymax);
        ctx.clearRect(0,0,canvas.width,canvas.height)
        ctx.fillRect(0, 0, 10, 10);
        ctx.rect(x_,y_,xmax-x_,ymax-y_);
        ctx.stroke()
    })
})
canvas {
border: 1px solid black;
}
<canvas></canvas>

Fiddle

clearRect 调用不起作用,因为之前的矩形仍然可见。

它没有理由不工作,为什么会这样?清除矩形后,将绘制新图像,并且所有先前的矩形都应该消失。

最佳答案

我看到您在最后调用了中风(),这可能是问题所在。请查看此处的“使用说明”:

https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/clearRect

A common problem with clearRect is that it may appear it does not work when not using paths properly. Don't forget to call beginPath() before starting to draw the new frame after calling clearRect.

关于javascript - clearRect 不清除 Canvas ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49537546/

相关文章:

javascript - HTML Select 中的排序选项

c# - 无法在 Firefox 浏览器上使用 AjaxFileUpload 控件的 asp.net WebForm 中更新标签

javascript - 需要绘制一 strip 有平滑 Angular 的褪色线

javascript - 为什么这些圆圈会出现在我的 Canvas 上?

android - 在 Android 中绘制和缩放 ImageView 和 Canvas

javascript - 如何使用 flask-wtf 在 html select 的 onChange 上传递参数

javascript - 如何在正则表达式测试中找到 ".*"满意的单词

Javascript 访问对象内的对象方法

javascript - 如何修复对象的旋转以跟随客户端的鼠标?

android - 手机间隙 : Scaling HTML5 canvas for smaller screens