我正在渲染一个单元格网格,非常类似于您在填字游戏中找到的网格,但使用四种不同的颜色填充每个单元格(不仅是黑色或白色)。
网格大小约为 160x120,我需要尽可能快地渲染它,因为它将用于显示元胞自动机动画。
我尝试了两种不同的方法来渲染网格:
使用以下内容渲染每个单元格:
var w = x + step; var h = y + step; canvasContext.fillStyle=cell.color; canvasContext.fillRect(x+1,y+1,w-1,h-1); canvasContext.strokeRect(x,y,w,h);
渲染没有边框的所有单元格,然后使用以下方法渲染网格线:
var XSteps = Math.floor(width/step); canvasContext.fillStyle = gridColor; for (var i = 0, len=XSteps; i<len; i++) { canvasContext.fillRect(i*step, 0, 1, height); } //Similar thing for Y coord
两种算法都表现不佳:在这两种情况下,绘制网格都比绘制单元格慢。我错过了什么吗?如何优化这些算法?我应该尝试另一种方法吗?
注意:网格移动,因为用户可以移动它或缩放视图。
一般的问题是:在元素上绘制单元格网格的最快算法是什么?