canvas鼠标绘制矩形如何让他可以绘制多个?

发布于 2022-09-13 01:26:37 字数 172 浏览 14 评论 0

我在网上找到了canvas绘制矩形的代码,但是canvas只能画一个,每次重新画上次那个就消失了,如何让他一个canvas可以画多个。
代码如下
https://jsrun.net/xLTKp/edit

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

聊慰 2022-09-20 01:26:37

image.png

就因为这里咯。他下次绘制就是会清除再绘制。


那么就保留一下咯 https://jsrun.net/DLTKp/edit

image.png

你与清晨阳光 2022-09-20 01:26:37

没学过canvas我改了一行代码,可以画多个但是如果绘画区域有框的话,还是会被清除

function myDrect(e){
            myPaint.p2.x = e.offsetX;
            myPaint.p2.y = e.offsetY;
            myPaint.ctx.width = myPaint.width;
            myPaint.ctx.height = myPaint.height;
            myPaint.ctx.fillStyle = '#FF0000';
            myPaint.ctx.strokeStyle = '#FF0000';
            var width = Math.abs(myPaint.p1.x-myPaint.p2.x);
            var height = Math.abs(myPaint.p1.y-myPaint.p2.y);
            // console.log(myPaint.canvas.width,myPaint.canvas.height)
            // 这里下面这一行被改了
            myPaint.ctx.clearRect(myPaint.p1.x,myPaint.p1.y,width,height);
            myPaint.ctx.beginPath();
            if(myPaint.p2.x>=myPaint.p1.x){
                if(myPaint.p2.y>=myPaint.p1.y){
                    myPaint.ctx.rect(myPaint.p1.x,myPaint.p1.y,width,height);
                }else{
                    myPaint.ctx.rect(myPaint.p1.x,myPaint.p1.y,width,-height);
                }
            }else{
                if(myPaint.p2.y>=myPaint.p1.y){
                    myPaint.ctx.rect(myPaint.p1.x,myPaint.p1.y,-width,height);
                }else{
                    myPaint.ctx.rect(myPaint.p1.x,myPaint.p1.y,-width,-height);
                }
 
            }
            myPaint.ctx.stroke();
            myPaint.ctx.save();
        }
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文