双缓存画布
现在我们有一幅图需要放在Canvas中,使用drawImage()方法,有三种写法:
// 将image放到目标canvas指定位置
void ctx.drawImage(image, dx...裁剪之后放到目标canvas指定位置,指定宽高渲染
void ctx.drawImage(image, sx, sy, sWidth, sHeight, dx, dy, dWidth, dHeight..., sx, sy, sWidth, sHeight, dx, dy, dWidth, dHeight);
// 在视图canvas中绘制
viewcontext.drawImage(canvas,...在需要渲染时,只需要讲缓存画布的内容克隆到主画布上,再附加上装饰图层元素
这样,当表格需要更新时候,比如单元格背景改变,只需要在克隆缓存画布后重绘对应单元格内容即可。...而当表格向下滚动时,表格滚动结束,需要重绘,主画布会被清空,然后从缓存画布中根据行为上下文进行画布偏移,将偏移后的图层直接绘制在主画布上,随后在主画布上绘制偏移后的剩余部分,最后更新缓存。