私はHTML5キャンバス上でデザインをレンダリングするのがかなり速いという印象を受けました。私は次のコードを使用していると私はレンダリングに1秒未満かかるだろうと思うだろうが、約2分を取る。HTML5キャンバスでデザインする - レンダリングを高速化する方法
コード:
<script>
var canvas = document.getElementById("canvas")
ctx = canvas.getContext('2d')
maxW = window.innerWidth
maxH = window.innerHeight
x = -1
numLeft = 15
//maxW = 300
//maxH = 300
canvas.setAttribute("width", maxW)
canvas.setAttribute("height", maxH)
ctx.fillStyle = "rgba(0,0,0,.5)"
for(var j = 0; j < maxH; j++){
for(var i = 0; i < maxW; i++){
if(numLeft < 0){
if(x == -1){
ctx.fillStyle = "rgba(127,127,127,.5)"
//numLeft += 12
numLeft += 5
}
else{
ctx.fillStyle = "rgba(0,0,0,.5)"
//numLeft += 24
numLeft += 15
}
x *= -1
}
ctx.fillRect(i,j,i+1,j+1)
numLeft--
}
//numLeft -= 5 this one's crazy :D
numLeft -= 3
}
黒とグレーのに斜めのストライプを描くことになっています。しかし、もう一度、レンダリングするのが永遠になり、ほとんどの人のブラウザがクラッシュするでしょう。どのようにこれをスピードアップするためのヒント?
「drawRect(x、y、1、1)」は1ピクセル(つまり '(x、y、w、h)')を塗りつぶします。これは、あなたが現在、より多くのピクセル(幅「i + 1」と高さ「j + 1」)を描いているので、スピードが飛躍的に向上します。つまり、ペイントしているピクセルの量が2次的に大きくなります。 – pimvdb
合意しました。このjsFiddleの違いを見ることができます。http://jsfiddle.net/luisperezphd/eY82y/ –