• 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并显示的高度和宽度。

     

  • 相关阅读:
    洛谷 P4160 [SCOI2009]生日快乐 题解
    洛谷 P1041 传染病控制 题解
    洛谷 P3154 [CQOI2009]循环赛 题解
    洛谷 P1144 最短路计数 题解
    洛谷 P2296 寻找道路 题解
    洛谷 P1514 引水入城 题解
    洛谷 P2661 信息传递 题解
    洛谷 P3958 奶酪 题解
    洛谷 P3501 [POI2010]ANT-Antisymmetry 题解
    【LGR-069】洛谷 2 月月赛 II & EE Round 2 Div.2 A-C题解
  • 原文地址:https://www.cnblogs.com/liuling608/p/6804261.html
Copyright © 2020-2023  润新知