canvas学习第二章
基础知识
- ctx.fillRect(x,y,width,height) 在位置(x,y)处以宽为width,高为height绘制一个矩形
- ctx.strokeRect(x,y,width,height) 在位置(x,y)处以宽为width,高为height绘制一个矩形边框,他需要strokeStyle,lineWidth,lineJoin和miterLimit设置
- lineCap: 线段末端的形状
- butt: 默认值,端点是垂直于线段边缘的平直边缘
- round: 端点是在线段边缘处以线宽为直径的半圆
- square: 端点是在选段边缘处以线宽为长,以一半线宽为宽的矩形
- lineJoin: 定义两条线相交产生的拐角,可将其称为连接
- miter: 默认值,在连接外边缘延长相接
- bevel: 连接处是一个对角线斜角
- round: 连接处是一个圆
- lineCap: 线段末端的形状
- ctx.clearRect(x,y,width,height) 在位置(x,y)处以宽为width和高为height清除指定区域并使其完全透明(使用透明黑作为颜色)
- 当前路径和位图受canvas上下文控制,不属于保存的状态,保存当前状态到堆栈用:ctx.save(),调出最后存储的堆栈恢复画布用ctx.restore()
- 高级路径画法
- ctx.arc(x,y,radius,startAngle,endAngle,anticlockwise) antilockwise若为false,则顺时针画圆,若为true,则逆时针画圆
- ctx.bezierCurveTo(cp1x,cp1y,cp2x,cp2y,x,y) 三次贝塞尔曲线
- ctx.quadraticCurveTo(cpx,cpy,x,y) 二次贝塞尔曲线
- canvas裁切区域
- 使用ctx.save(),ctx.restore(),ctx.rect(),ctx.clip()可以完成区域裁切
- 旋转变换
- ctx.setTransform(1,0,0,1,0,0)和ctx.rotate() 变换在调用setTransform()或其他变换函数后立即应用到形状与路径上。
- 缩放变换
- ctx.scale() 对图像进行缩放
- 填充渐变形状 :水平渐变,垂直渐变,对角线渐变,径向渐变
- 水平渐变:var gr = ctx.createLinearGradient(0,0,100,0);
- 垂直渐变:var gr = ctx.createLinearGradient(0,0,0,100);
- 对角线渐变:var gr = ctx.createLinearGradient(0,0,100,100);
- 径向渐变:var gr = ctx.createRadialGradient(50,50,50,50,100);
- 给渐变添加断点:gr.addColorStop(.5,’rgb(0,255,0)’);
- 用图案填充:
- 四种填充类型:repeat,repeat-x,repeat-y,no-repeat
- var fill = ctx.createPattern(‘fillImg’,’repeat’);
- 创建阴影
- shadowOffsetX和shadowOffsetY值可以是正也可以为负,负值将会在左侧和上方创建阴影,反之,将会在底部创建阴影。shadowBlur属性用来设置阴影模糊效果的程度。这三个参数不受当前canvas变换矩阵影响,shadowColor可以是任何HTML4颜色字符串。
以下代码是关于划线:
- shadowOffsetX和shadowOffsetY值可以是正也可以为负,负值将会在左侧和上方创建阴影,反之,将会在底部创建阴影。shadowBlur属性用来设置阴影模糊效果的程度。这三个参数不受当前canvas变换矩阵影响,shadowColor可以是任何HTML4颜色字符串。
|
|
以下代码关于区域的裁切:
|
|
也可将其它canvas方法配合裁切区域使用,最常见的是arc()函数
以下代码是关于旋转:
|
|
缩放变换代码如下:
|
|
渐变代码如下:
|
|
阴影代码如下:
|
|