[编辑:发送错误报告:收到回复,closePath需要一个弧 – >圆形图纸]
所以IE需要在形成圆圈的弧线上使用closePath,但Chrome / FF可以让你不用:
context.beginPath();
context.arc(100,100,3,0,Math.PI*2,false);
context.closePath();
结束编辑
////////////////////////////////////////////////// /////
此代码应该只是在html画布中显示圆的行和列.
任何人都可以确认这在Chrome中显示正常并在IE中显示奇怪吗?
如果是这样,任何想法为什么?
我正在运行IE版本:10.0.9200.16540.
这是代码和小提琴:http://jsfiddle.net/m1erickson/P72NM/
<!doctype html>
<html>
<head>
<link rel="stylesheet" type="text/css" media="all" href="css/reset.css" /> <!-- reset css -->
<script type="text/javascript" src="http://code.jquery.com/jquery.min.js"></script>
<style>
body{ background-color: ivory; }
canvas{border:1px solid red;}
</style>
<script>
$(function(){
var canvas=document.getElementById("canvas");
var ctx=canvas.getContext("2d");
var spacing=15;
var linespacing=8;
var radius=3;
ctx.lineWidth=linespacing;
ctx.fillStyle="maroon";
ctx.strokeStyle="red";
ctx.beginPath();
for(var row=5;row<canvas.height;row+=spacing*3){
for(var col=5;col<canvas.width;col+=spacing*3){
ctx.arc(col,row, 4, 0, 2 * Math.PI, false);
}
}
ctx.fill();
}); // end $(function(){});
</script>
</head>
<body>
<canvas id="canvas" width=300 height=300></canvas>
</body>
</html>
最佳答案 重要的是要注意Chrome在这里是不正确的. IE10和Firefox正在遵循规范.
在一个简单的例子中更明显,例如:
ctx.fillStyle = 'rgba(255,0,0,.4)';
ctx.beginPath();
ctx.arc(50,50,20,Math.PI*2, 0);
ctx.arc(50,150,20,Math.PI*2, 0);
ctx.arc(150,100,20,Math.PI*2, 0);
ctx.stroke();
ctx.fill();
结果如下:
根据规范,arc命令将两个点添加到子路径和它们之间的弧.它不会关闭子路径,只有当它位于当前路径的开头时才会添加隐式moveTo. IE和Firefox正在做正确的事情.
Chrome(半)假设在弧线调用之间有一种移动,但仅用于填充.
换句话说,在几个弧命令之间应该有直线,因为Chrome在应用stroke()时正确显示. Chrome不支持这些填充行,这是一个错误.