HTML5 canvas元素

Canvas是HTML5新增的专门用来绘制图形的元素,是基于像素的绘图,相当于画板的html节点。事实上,canvas元素只是一块无色透明的区域,需要利用JavaScript编写在其中进行绘画的脚本。接下来将主要学习Canvas的渲染上下文、坐标系统、画布状态、变形合成以及高级图像和视频处理技巧。

<canvasid="myCanvas" style="border:1px solid;"width="200" height="100"/>

 

fillRect(50,25,100,50)中的前两个参数用于指定位置的x轴和y轴的坐标值,在Canvas中,坐标原点(0,0)位于Canvas的左上角,x轴水平向右延伸,y轴垂直向下延伸。

moveTo方法用于建立新的子路径,并规定其起始点为(x,y),用法如下:

context.moveTo(x,y)

           绘制矩形有两种方法:

                                fillRect----------颜色填充

                                strokeRect----绘制轮廓(或线条)

图形指定颜色用到的两个属性是fillStyle和strokeStyle。stroke方法用于在显示设备中输出线条,fill方法输出的是填充颜色。

 

绘制圆形

context.arc(x,y,radius,startAngle,endAngle,anticlockwise);

beginPath()方法用于开始绘制路径

closePath()方法用于结束绘制路径

arc()方法用于绘制圆形,其用法如下

x,y为起点坐标

radius为圆形半径

startAngle为开始的角度

endAngle为结束的角度

anticlockwise为是否按顺时针方向进行绘制

 

绘制三角形

   ctx.beginPath();

   ctx.moveTo(x1, y1);

   ctx.lineTo(x2, y2);

   ctx.lineTo(x3, y3);

  ctx[type + 'Style'] = color;

  ctx.closePath();

  ctx[type]();

x1(2、3),y1(2、3)-

三角形的三个点的坐标;color-绘制颜色;type-绘制类型('fill'和'stroke')

 

clearRect()可清除指定的矩形区域内的所有图形

Context.clearRect(x,y,width,height);

 

quadraticCurveTo()用于绘制二次方贝塞尔曲线

context.quadraticCurveTo(cp1x,cp 1y,x,y);

参数cp 1x和cp 1y是控制点的坐标,x和y是终点坐标。

 

bezierCurveTo()用于绘制三次方贝塞尔曲线,其用法如下:

context.bezierCurveTo(cp1x,cp 1y,cp2x,cp2y,x,y);

参数cp 1x和cp 1y是第一个控制点的坐标,cp2x和cp2y是第二个控制点的坐标,x和y是终点坐标。

 

save()和restore()用于保存和恢复Canvas状态,这两个方法都不需要任何参数。

 

translate()用于移动坐标空间,使画布的变换矩阵发生水平和垂直方向的偏移

context.translate(dx,dy);

dx和dy分别为坐标原点沿水平和垂直两个方向的偏移量。

 

rotate()用于以原点为中心旋转Canvas,实质仍是旋转Canvas上下文对象的坐标空间,

  context.rotate(angle);

  angle为旋转角度。

 

scale()用于增减Canvas上下文对象中的像素数目,从而实现图形或位图的放大或缩小,

  context.scale(x,y);

  x为横轴的缩放因子,y轴为纵轴的缩放因子,它们的值必须为正值。值小于1为缩小图形,值大于1为放大图形。

 

transform()用于直接对变形矩阵作修改,即进行矩阵变换。

context.transform(m11,m12,m21,m22,dx,dy);

dx为原点沿x轴移动的数值,dy为原点沿y轴移动的数值。m11、m22或m12、m21为沿x、y轴放大的倍数。

globalCompositeOperation属性的值可以改变图形的绘制顺序或绘制方式,指定为source-over,即默认设置,新的图形会覆盖在原有图形之上,也可以指定其他值。globalCompositeOperation语句的位置应处在原有内容与新图形之间。

 

clip()用于裁切路径,作用是形成一个蒙版,没有被蒙版的区域会隐藏

 

lineWidth设置线条的粗细,值必须为正数,默认值为1.0;

lineCap设置端点样式,属性值包括以下三种:butt,round和square,默认值为butt。

lineJoin设置连接处样式,属性值包含以下三种:round、bevel和miter,默认值为miter。

miterLimit设置绘制交点的方式,当lineJoin属性值设置为miter时,miterLimit属性的作用是为斜面的长度设置一个上限,默认为10,即规定斜面的长度不能超过萧条宽度的10倍。如果lineJoin属性值为round或bevel时,miterLimit属性无效。

 

线性渐变------需要使用createLinearGradient方法创建canvasGradient对象,然后使用addColorStop方法进行上色。

径向渐变------需要使用createRadialGradient方法创建canvasGradient对象,然后使用addColorStop方法进行上色。

 

createPattern()用来实现图案效果

 

rgba() 可以设置具有透明度的颜色

    rgba(R,G,B,A);

 R、G、B、为红绿蓝,

 A把alpha成分指定为0~1的一个浮点数值。

 

fillText()和strokeText()---------绘制文字分别用于以填充方式和轮廓方法绘制文字。

 

measureText()可以测量当前所绘制文字中指定文字的宽度。

 

drawImage()有三种用法:

context.drawImage(image,x,y); //引入image对象

context.drawImage(image,x,y,width,height); //改变图形大小

context.drawImage(image,sx,sy,sWidth,sHeight,dx,dy,dWidth,dHeight);//创建图片切片,

其中sx、sy为源图像被切割区域的起始坐标,

sw、sh为源图像被切下来的宽度和高度,

dx、dy为被切割下来的源图像要放置到目标canvas的起始坐标,

dw、dh为被切割下来的原图像放置到目标canvas并显示的高度和宽度。

 

posted @ 2017-05-04 21:59  小令君  阅读(654)  评论(0编辑  收藏  举报