gpt4 book ai didi

javascript - 清除 Canvas 不起作用

转载 作者:太空宇宙 更新时间:2023-11-04 15:01:52 25 4
gpt4 key购买 nike

我有一个 Canvas ,它是一些东西的容器。现在我想彻底清除所有内容。

这是我的 HTML:

    <body>  
<canvas id="my" width="1800" height="1000" style="border:3px solid"></canvas>
<br>
<input type="button" value="line" onclick="drawline()"/>
<input type="button" value="circle" onclick="drawcircle()"/>
<input type="button" value="reset" onclick="reset()"/>
</body>

这是我的 Javascript:

    var canvas;
var context;
function drawline()
{
canvas = document.getElementById("my");
context = canvas.getContext("2d");
context.beginPath();
context.moveTo(70, 140);
context.lineTo(140, 70);
context.stroke();
}

function drawcircle()
{
canvas = document.getElementById("my");
context = canvas.getContext("2d");
context.beginPath();
context.arc(95,50,40,0,2*Math.PI);
context.stroke();
context.closePath();
}

function reset()
{
canvas = document.getElementById("my");
canvas.clearRect(0,0, canvas.width, canvas.height);
}

但是重置按钮不起作用。我是初学者,已经尝试过一些调试:他进入了重置功能,但在第二行崩溃了。canvas.width 和 canvas.height 也有正确的值 - 我把它们打印出来看看里面有什么。

编辑:感谢“Yeldar Kurmangaliyev”——获取 Canvas 的二维上下文解决了部分问题。但是我的js文件中的这种绘图仍然不会消失:

    function tree()
{
canvas = document.getElementById("my");
context = canvas.getContext("2d");
for (var i = 0; i <= 1; i++)
{
if (i === 0)
{
context.translate(350, 200);
}
else
{
context.translate(0, 100);
}

context.beginPath();
context.moveTo(-25, -50);
context.lineTo(-10, -80);
context.lineTo(-20, -80);
context.lineTo(-5, -110);
context.lineTo(-15, -110);
context.lineTo(0, -140);
context.lineTo(15, -110);
context.lineTo(5, -110);
context.lineTo(20, -80);
context.lineTo(10, -80);
context.lineTo(25, -50);
context.closePath();
context.stroke();
}
}

编辑2:我找到了第二个问题的解决方案。它是 context.translate。我假设 clear.Rect 清除了 Canvas 中的错误区域,因为“零坐标”已移动到翻译中定义的坐标。表示 0.0 在转换 350.200 之后,然后是 350.300、350.400、...

现在这是我的工作重置功能。感谢this post :

    function reset()
{
canvas = document.getElementById("my");
context = canvas.getContext("2d");
context.setTransform(1, 0, 0, 1, 0, 0);
context.clearRect(0,0, canvas.width, canvas.height);
}

最佳答案

您正在尝试对 document.getElementById(DOM 元素)的结果调用 clearRectclearRect 是 Canvas 上下文的成员。

应该是:

function reset()
{
canvas = document.getElementById("my");
context = canvas.getContext("2d");
context.clearRect(0,0, canvas.width, canvas.height);
}

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

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com