Canvas奇技淫巧
1.事件监听
(1) 刚开始知道的主要原理是在cavas上绑定一个时间,然后判断当前鼠标的位置落在哪个图形中,然后重绘这个图形。
1.canvas自由拼图
2.canvas中的拖拽、缩放、旋转 (上) —— 数学知识准备
3.监听Canvas内部元素点击事件的三种方法
4.如何在Canvas上的图形/图像绑定事件监听?
5.canvas事件绑定,画布中图形的事件处理,以及画布事件代理
2.cavas性能优化的方法
(1) 使用 requestNextAnimationFrame进行动画循环。
(2) 利用剪辑区域来处理动画背景或其他不变的图像。
(3) 离屏缓冲区(离屏canvas)。
(4) 尽量利用 CSS。
- 背景图
- transform变幻
(5) 关闭透明度
(6) 尽量不要频繁地调用比较耗时的API
(7) 避免浮点数的坐标
(8) 渲染绘制操作不要频繁调用
(9) 尽量少的改变状态机 ctx的里状态
(10) 尽量少的调用 canvas API
(11) 避免阻塞
(12) web worker
(13) 分解任务
1.Canvas性能优化
3.局部重绘
局部重绘,简单点就是只绘制变化的部分,不变化的部分就不用绘制了。但是,一个直观的感觉就是,如果两个形重叠,如何通过clip只清理变化的部分,而不用绘制全部呢?
4.飞线效果
飞线效果,就是像航班动态图的展示效果。
1.canvas实现飞线流动效果
5.监听点击事件
canvas作为一个整体,并不能实现像点击dom元素一样,对每一个dom元素进行事件监听。
1.监听Canvas内部元素点击事件的三种方法 (像素法、角度法和射线法,判断点击的位置是否在元素内)
2.canvas绘制不规则图形,点击获取当前图形索引
3.如何在canvas内部元素上监听事件 (实际上就是封装了一个矩形,然后通过判断点击的点是否在矩形内,然后触发canvas的点击事件)
4.canvas绘制不规则图形,点击获取当前图形索引
6.多图层
7.拖拽
8.局部重绘
1.Canvas 局部渲染优化总结
9.缩放
1.canvas 中做到无损缩放
2.canvas宽高改变后,画布上的内容消失了 getImageData 保存画布数据,改变宽高后重绘
3.Canvas中像素级别ImageData缩放
4.canvas绘制图像的两种缩放模式