Javascript Chrome中的锯齿状画布渲染

Javascript Chrome中的锯齿状画布渲染,javascript,html,canvas,Javascript,Html,Canvas,我正在使用HTML画布编写一个绘图应用程序。为了平滑绘制的线,我在每个mousemove事件之后填充一系列二次曲线: ctx.beginPath() ctx.moveTo(mx1-halfLastWidth*sin(angle), my1-halfLastWidth*cos(angle)) ctx.quadraticCurveTo(mx1-lastWidth*cos(angle), my1+lastWidth*sin(angle), mx1+halfLastW

我正在使用HTML画布编写一个绘图应用程序。为了平滑绘制的线,我在每个
mousemove
事件之后填充一系列二次曲线:

    ctx.beginPath()
    ctx.moveTo(mx1-halfLastWidth*sin(angle), my1-halfLastWidth*cos(angle))
    ctx.quadraticCurveTo(mx1-lastWidth*cos(angle), my1+lastWidth*sin(angle),
      mx1+halfLastWidth*sin(angle), my1+halfLastWidth*cos(angle))
    ctx.quadraticCurveTo(xl+halfMidWidth*sin(angle), yl+halfMidWidth*cos(angle),
      mx2+halfCurrentWidth*sin(angle), my2+halfCurrentWidth*cos(angle))
    ctx.quadraticCurveTo(mx2+currentWidth*cos(angle), my2-currentWidth*sin(angle),
      mx2-halfCurrentWidth*sin(angle), my2-halfCurrentWidth*cos(angle))
    ctx.quadraticCurveTo(xl-halfMidWidth*sin(angle), yl-halfMidWidth*cos(angle),
      mx1-halfLastWidth*sin(angle), my1-halfLastWidth*cos(angle))
    ctx.fill()
完整演示:(由于这是从一个更大的项目中提取出来的,所以有很多不相关的代码)

这些线条在Firefox中呈现得非常平滑,但在Chrome中的某些地方看起来“锯齿状”:

向浏览器发出的一系列命令和参数是相同的


如何让Chrome像Firefox一样渲染线条?

关于字体渲染,各地都在问类似的问题。这几乎肯定是同一个根本问题:渲染引擎产生的抗锯齿差异。正如你所知,Chrome使用Webkit;杰夫,壁虎。Gecko似乎比Webkit更喜欢反走样

把它归结为一个浏览器问题(我想你通常会用IE的方式)


编辑:似乎人们也知道相反的说法是正确的。Nick Heer在“由于Gecko更精确(和更块状)的抗锯齿,大多数衬线面看起来不太好”中讨论了这一点。这可能是一个平台问题。

在上发布演示,以便我们可以测试它。好的,在Chrome上发布对我来说非常有效:。(我在64位Linux上运行Chrome 21)有趣的是,这可能是一个特定于平台的问题。我最初的测试是在OS X上使用Chrome 21。在Windows上,它似乎更好一些,但仍然表现为慢笔划:对于真正慢的笔划,我确实会得到一些锯齿状的边缘,但这似乎与Firefox的渲染一致:。它可能是特定于平台的。