在HTML5 canvas元素中移动矩形(像素)区域的最快方法是什么

时间:2010-01-11 10:25:49

标签: javascript html5 canvas

我想实现HTML5 canvas元素内容的垂直滚动。我不想再渲染整个内容。相反,我想向下/向上移动整个内容,只渲染已滚动到视图中的区域。

我尝试了getImageDataputImageData函数,但在我的测试中,它们几乎和重新绘制整个场景一样慢。

// scroll 20px down
var data = ctx.getImageData(0, 0, width, height-20);
ctx.putImageData(0, 20);

在canvas元素中复制矩形像素区域的最快方法是什么?

2 个答案:

答案 0 :(得分:12)

试试这个:

ctx.drawImage(ctx.canvas, 0, 0, width, height-20, 0, 20, width, height-20);
对于第一个参数,

drawImage可以使用HTMLImageElementHTMLCanvasElementHTMLVideoElement

答案 1 :(得分:7)

对于绝对速度,我会在<canvas>内使用<div>来设置overflow:hidden,然后使用常规DOM方法滚动<canvas>内的<div> 1}}。

当然,这会牺牲内存使用而有利于速度。