为什么在初始页面加载下面呈现的画布线的保真度低于上面那些?

时间:2012-08-28 17:58:14

标签: html5 canvas paperjs

我使用paper.js来管理我的html5绘图。在Chrome中,如果我在页面底部重新加载并查看此行,则很明显:

image1

如果我在底部重新加载,我可以向上和向下滚动,线条将保持其保真度。

但如果我在页面顶部重新加载并向下滚动,那么这条线看起来是锯齿状的而不是消除锯齿的,就像这样:

image2

奇怪的是,如果我在最初加载到页面顶部后向上和向下滚动几次,则保真度会变差:

image3

在Safari中也会发生这种情况,并且在Firefox中它会发生,但几乎到了不明显的程度。我的假设是,这与以下事实有关:当我在底部加载时,加载上方的所有dom元素都在页面加载时呈现。如果我在顶部加载,元素只在滚动到视图时呈现(因此与滚动事件争用并重新绘制CPU?)

但是我能做些什么来确保所有dom事件都是在页面加载时呈现的吗?我已经将初始绘图函数包装在$(document).ready。

1 个答案:

答案 0 :(得分:0)

这似乎与性能有关(我还没有对它进行分析,所以我不确定CPU或内存是否是限制因素)。但我可以简单地在onFrame循环中向console.log添加一个计算,尽管没有html5启动的动画或在屏幕上重绘,但这些行会出现锯齿状。

编辑:

真正的问题是将大小调整添加到canvas标签,如:

<canvas resize></canvas>

将导致页面中某一点下的所有内容重新绘制。