Html5-canvas Bug
Html5-canvas Bug
本文关键字:Bug Html5-canvas 更新时间:2023-09-26
所以我正在用<canvas>
标签测试我的技能,我决定在一个简单且缺少css的网页上制作一个绘图函数。这是我的密码。
<html>
<head>
<script>
function graph(equation){
var c = document.getElementById("myCanvas");
var ctx = c.getContext("2d");
ctx.clearRect(0-c.width/2, 0-c.height/2, c.width, c.height);
ctx.translate(c.width/2,c.height/2);
ctx.strokeStyle = "red";
ctx.moveTo(0-c.width/2,0);
ctx.beginPath();
for(i=0-c.width/2;i<=c.width;i++){
ctx.lineTo(i,eval(equation.replace(/x/g,i.toString()))*-1);
};
ctx.stroke()
ctx.closePath();
}
</script>
</head>
<body>
<canvas id="myCanvas" width="700" height="550" style="border:1px solid #d3d3d3;">
Your browser does not support the HTML5 canvas tag.
</canvas>
<textarea id="graphi" height="16px" width="200"></textarea>
<button onclick="graph(document.getElementById('graphi').value);">graph</button>
</body>
</html>
我的问题是,每当我画两次图时,它就会改变(0,0)的位置,除非我完全重置页面,否则我无法将其改回。所以我的问题实际上是我的函数出现了什么问题,我该如何解决它?提前谢谢。
getContext
不会创建新的上下文,它每次都返回相同的上下文。在得到上下文后,你翻译它,它只是保持翻译。
要修复此问题,请只翻译一次上下文,或者在使用后在函数末尾将其翻译回。
顺便说一句,不更改上下文几何体(平移、旋转、缩放)的一个简单方法是在函数开头使用context#save
,在函数结尾使用context#restore
。这里的好处是上下文维护了一堆状态,因此如果您在函数内部调用函数,它也可以安全地使用保存/还原对。
在翻译上下文之前,您应该先.save
上下文的状态。这也有简化clearRect
调用的优点:
ctx.clearRect(0, 0, c.width, c.height); // simplified
ctx.save(); // save the current state
ctx.translate(c.width/2,c.height/2);
ctx.strokeStyle = "red";
ctx.moveTo(0-c.width/2,0);
ctx.beginPath();
for(i=0-c.width/2;i<=c.width;i++){
ctx.lineTo(i,eval(equation.replace(/x/g,i.toString()))*-1);
};
ctx.stroke();
ctx.closePath();
ctx.restore(); // to back to the original (untranslated) state
相关文章:
- IE9的HTML5 Canvas getImageData()函数存在问题
- 查找带有边框的HTML5 Canvas(点击)事件的坐标
- 在keydown(JS,Jquery)上更改HTML5 Canvas元素
- HTML5 Canvas访问控制允许原始错误
- HTML5 Canvas toDataURL(“image/png”)适用于一些绘画,而有些则不然,不确定原因
- 如何在MVC5中运行时在HTML5 Canvas中显示图像
- HTML5 Canvas无法加载Kinetic.js
- 构建HTML5 Canvas/JS游戏
- HTML5 Canvas+js游戏|死亡时重置游戏更改游戏速度
- HTML5 Canvas undo是'在IE或Firefox中无法正常工作
- 在Javascript HTML5+Canvas中处理精灵鼠标点击的最佳方式
- html5 canvas toDataURL 返回空白图像
- HTML5 Canvas 的初学者,使用图层
- HTML5 Canvas drawImage ratio bug iOS
- html5 Canvas getImageData 或 toDataURL 的结果 - 占用更多内存
- HTML5 Canvas - 磨砺到停顿
- HTML5 Canvas - 使用命令数组通过上下文进行绘制
- 尝试绘制从鼠标位置工具栏中选择的形状 - HTML5 CANVAS
- Html5 Canvas Javascript使我的网页链接没有响应
- Html5-canvas Bug