canvas画圆时遇到问题
canvaslock.prototype.drawCle = function (x, y) {
this.ctx.fillStyle="#0ff";
// this.ctx.beginPath(); 如图我去掉beginPath()后出现了下面的现象,我知道beginPath() 方法开始一条路径,或重置当前的路径。如果不加,内存中会存留以前的路径,导致多次绘画。但多次绘画也是画圆啊,怎末会出现多边形
this.ctx.arc(x, y, this.r, 0, Math.PI * 2, true);
this.ctx.fill();
};
22
收起
正在回答
3回答
你好,粘贴全部代码,是指html\css\js,为了更好测试代码,因为出现问题有能上下关联代码问题。针对你的代码与截图综合考虑,关于beginPath();的理解基本正确,可见beginPath();的重要性,开始一条路径,图形之间如没有该语句,会以“上一次beginPath”之后的所有路径为基础进行绘制,所以出现所有图形都连起来,无论直接绘制,还是用JS绘制,每个形状都要有beginPath(),fill(),以避免出现异常,参考如下:
var canvas=document.getElementById('canvas'), ctx=canvas.getContext("2d"); ctx.fillStyle = "#0ff"; ctx.beginPath(); ctx.arc(64, 64, 20, 0, 2 * Math.PI); ctx.fill(); ctx.beginPath(); ctx.arc(150, 64,20 , 0, 2 * Math.PI); ctx.fill(); ctx.beginPath(); ctx.arc(235, 64,20 , 0, 2 * Math.PI); ctx.fill(); ctx.beginPath(); ctx.arc(64, 150, 20, 0, 2 * Math.PI); ctx.fill();
希望帮你解答疑惑,加油!
HTML5&CSS3进阶与常用框架 2018
- 参与学习 315 人
- 提交作业 136 份
- 解答问题 626 个
如果你有H5、CSS3、JS基础,热爱前端并希望在前端应用方面不断进步,那就来吧,本路径为你带来的课程有HTML5进阶、CSS3进阶、JS面向对象、jQ基础、Less等,助你进一步提升前端开发技能
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星