第一部分Canvas基础 1
第1章Canvas概述 1
1.1 Canvas简介 1
1.1.1 Canvas是什么 1
1.1.2 Canvas与SVG 2
1.2 Canvas元素知识 3
1.2.1 Canvas元素 4
1.2.2 Canvas对象 5
第2章直线图形 8
2.1直线图形简介 8
2.2直线 8
2.2.1 Canvas坐标系 8
2.2.2直线的绘制 9
2.3矩形 14
2.3.1“描边”矩形 15
2.3.2“填充”矩形 17
2.3.3 rect()方法 20
2.3.4清空矩形 22
2.4多边形 25
2.4.1 Canvas绘制箭头 25
2.4.2 Canvas绘制正多边形 26
2.4.3五角星 29
2.5训练题:绘制调色板 31
第3章 曲线图形 34
3.1曲线图形简介 34
3.2圆形简介 34
3.2.1圆形 34
3.2.2“描边”圆 35
3.2.3“填充”圆 38
3.3弧线 39
3.3.1 arc()画弧线 39
3.3.2 arcTo()画弧线 42
3.4二次贝塞尔曲线 47
3.5三次贝塞尔曲线 50
3.6训练题:绘制扇形 53
第4章 线条操作 57
4.1线条操作 57
4.2 IineWidth属性 58
4.3 IineCap属性 60
4.4 IineJoin属性 63
4.5 setLineDash()方法 65
第5章 文本操作 67
5.1文本操作简介 67
5.2文本操作“方法” 68
5.2.1 strokeText()方法 68
5.2.2 fillText()方法 69
5.2.3 measureText()方法 71
5.3文本操作“属性” 73
5.3.1 font属性 73
5.3.2 textAlign属性 74
5.3.3 textBaseline属性 76
第6章 图片操作 79
6.1图片操作简介 79
6.2绘制图片 79
6.2.1 drawlmage(image,dx,dy) 80
6.2.2 drawlmage(image,dx,dy,dw,dh) 83
6.2.3 drawlmage(image,sx,sy,sw,sh, dx,dy,dw,dh) 84
6.3平铺图片 86
6.4切割图片 89
6.5深入图片操作 92
第7章 变形操作 95
7.1变形操作简介 95
7.2图形平移 96
7.2.1 translate()方法 96
7.2.2 clearRect()方法清空Canvas 99
7.3图形缩放 100
7.3.1 scale()方法 100
7.3.2 scale()方法的负作用 103
7.4图形旋转 105
7.4.1 rotate()方法 105
7.4.2改变旋转中心 108
7.5变换矩阵 109
7.5.1 transform()方法 109
7.5.2 setTransform()方法 114
7.6深入变形操作 116
7.7训练题:绘制绚丽的图形 117
7.8训练题:绘制彩虹 119
第8章 像素操作 121
8.1像素操作简介 121
8.1.1 getlmageData()方法 121
8.1.2 putlmageData()方法 122
8.2反转效果 123
8.3黑白效果 126
8.4亮度效果 130
8.5复古效果 131
8.6红色蒙版 133
8.7透明处理 136
8.8 createlmageData()方法 137
第9章 渐变与阴影 141
9.1线性渐变 141
9.2径向渐变 145
9.3阴影 150
第10章Canvas路径 156
10.1路径简介 156
10.2 beginPath()方法和closePath()方法 156
10.2.1 beginPath()方法 157
10.2.2 closePath()方法 160
10.3 isPointlnPath()方法 165
第11章Canvas状态 168
11.1状态简介 168
11.2 clip()方法 168
11.3 save()方法和restore()方法 171
11.3.1图形或图片剪切 172
11.3.2图形或图片变形 174
11.3.3状态属性的改变 176
第12章 其他应用 178
12.1 Canvas对象 178
12.1.1 Canvas对象属性 178
12.1.2 Canvas对象方法 180
12.2 globalAlpha属性 182
12.3 globalCompositeOperation属性 183
12.4 stroke()和fill() 187
第二部分Canvas进阶 191
第13章 事件操作 191
13.1 Canvas动画简介 191
13.2鼠标事件 192
13.2.1什么是鼠标事件 192
13.2.2获取鼠标位置 192
13.3键盘事件 195
13.3.1什么是键盘事件 195
13.3.2获取物体移动方向 195
13.4循环事件 199
第14章 物理动画 202
14.1物理动画简介 202
14.2三角函数简介 203
14.2.1什么是三角函数 203
14.2.2 Math.atan()与Math.atan2() 204
14.3三角函数应用 210
14.3.1两点间的距离 210
14.3.2圆周运动 212
14.3.3波形运动 217
14.4匀速运动 222
14.4.1什么是匀速运动 222
14.4.2速度的合成和分解 224
14.5加速运动 227
14.5.1什么是加速运动 227
14.5.2加速度的合成和分解 231
14.6重力 233
14.6.1什么是重力 233
14.6.2重力的应用 235
14.7摩擦力 238
第15章 边界检测 241
15.1边界检测简介 241
15.2边界限制 242
15.3边界环绕 245
15.4边界生成 250
15.5边界反弹 256
第16章 碰撞检测 262
16.1碰撞检测简介 262
16.2外接矩形判定法 262
16.3外接圆判定法 271
16.4多物体碰撞 275
16.4.1排列组合 275
16.4.2多物体碰撞 275
第17章 用户交互 283
17.1用户交互简介 283
17.2捕获物体 284
17.2.1什么是捕获物体 284
17.2.2捕获静止物体 285
17.2.3捕获运动物体 287
17.3拖拽物体 291
17.4抛掷物体 297
第18章 高级动画 306
18.1高级动画简介 306
18.2缓动动画简介 306
18.3缓动动画应用 313
18.4弹性动画简介 317
18.5弹性动画应用 323
第19章Canvas游戏开发 327
19.1 Canvas游戏开发简介 327
19.2 Box2D简介 328
19.2.1 Box2D 328
19.2.2 Box2DWeb 328
19.3 HTML5游戏引擎 331
第20章Canvas图表库 334
20.1 Canvas图表库简介 334
20.2 ECharts和HightCharts 336