Canvas 帆布弧制成的圆圈在IE10中表现不正常,在铬合金中表现良好——确认吗?

Canvas 帆布弧制成的圆圈在IE10中表现不正常,在铬合金中表现良好——确认吗?,canvas,html5-canvas,Canvas,Html5 Canvas,[编辑:已发送错误报告:已收到closePath需要圆弧-->圆形图形的回复] 因此IE要求在形成圆的圆弧上使用closePath,但Chrome/FF允许您不使用: context.beginPath(); context.arc(100,100,3,0,Math.PI*2,false); context.closePath(); 结束编辑 /////////////////////////////////////////////////////// 这段代码应该只是在html画布中显示圆圈

[编辑:已发送错误报告:已收到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

下面是代码和小提琴:


正文{背景色:象牙;}
画布{边框:1px纯红;}
$(函数(){
var canvas=document.getElementById(“canvas”);
var ctx=canvas.getContext(“2d”);
var间距=15;
var行间距=8;
var半径=3;
ctx.线宽=线间距;
ctx.fillStyle=“栗色”;
ctx.strokeStyle=“红色”;
ctx.beginPath();

对于(var row=5;row,需要注意的是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(半)假设在arc调用之间有一种
moveTo
,但仅用于填充


换句话说,在几个
arc
命令之间应该有直线,正如Chrome在
stroke()时正确显示的那样
已应用。Chrome不尊重这些填充线,这是一个缺陷。

我可以确认,但我无法解释原因。感谢确认,我将提交一份缺陷报告。回答和+1:非常好的一点!现在我在心里认为弧(x、y、r、0、PI2、false)是一个360度的弧,有两个重叠(但分开)结束点。如果命令名为“arc”而不是“circle”,人们可能会认为我会理解得更快!!再次感谢Simon,你总是一个很好的知识来源。
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();