canvas教程

前端小项目:使用canvas绘画哆啦A梦

字号+ 作者:H5之家 来源:H5之家 2017-04-23 14:02 我要评论( )

最近在学canvas元素,canvas标签只是图形容器,必须使用js来绘制图形。为了增强对canvas元素的理解,于是用canvas画了一个哆啦A梦来 要实现的效果图 哆啦A梦 要想

最近在学canvas元素,<canvas>标签只是图形容器,必须使用js来绘制图形。为了增强对canvas元素的理解,于是用canvas画了一个哆啦A梦来

要实现的效果图

哆啦A梦

要想绘画出这个哆啦a梦首先要掌握以下一些函数:

  • arcTo()
  • canvas绘制圆形或弧线
  • bezierCurveTo()
  • quadraticCurveTo()
  • 开始绘画!!

    首先我们需要创建一个400*600的画布,代码如下:

    =>

    接着定义一个div,用来显示坐标

    =>

    接着我写了一个显示坐标的函数,可以用来看大概画到哪个点:

    function zuobiao(event) { var x = event.clientX; var y = event.clientY; var out = document.getElementById("put"); out.innerHTML = "x:" + x + " y:" + y; }

    然后getContext() 方法返回一个用于在画布上绘图的环境。

    var cxt = document.getElementById('doraemon').getContext('2d');

    接着开始画头部:

    cxt.beginPath();//起始路径 cxt.lineWidth = 1;//线宽度为1 cxt.strokeStyle = '#000';//笔触的颜色 cxt.arc(200, 175, 175, 0.7 * Math.PI, 0.3 * Math.PI);//绘制弧,中心点(200,175),半径175 cxt.fillStyle = '#0bb0da';//设置填充时的颜色 cxt.fill();//填充颜色 cxt.stroke();//绘制路径

    头部如下:

    头部

    接着绘画出脸部:

    cxt.beginPath(); cxt.fillStyle = '#fff'; cxt.moveTo(110, 110);//将路径移到点(110110),不创建线条 cxt.quadraticCurveTo(-10, 200, 120, 315);//创建二次贝塞尔曲线,控制点(-10,200),结束点(120,315) cxt.lineTo(280, 315);//添加一个新点,然后在画布中创建从(110110)到(280315)的线条 cxt.quadraticCurveTo(410, 210, 290, 110); cxt.lineTo(110, 110); cxt.fill(); cxt.stroke();

    脸部如下:

    脸部

    接着绘画眼睛:

    cxt.beginPath(); cxt.lineWidth = 1; cxt.fillStyle = '#fff'; cxt.moveTo(110, 110); cxt.bezierCurveTo(110, 25, 200, 25, 200, 100);//创建三次贝塞尔曲线,控制点1(110,25),控制点2(200,25),结束点(200,100),也就是画左上半椭圆 cxt.bezierCurveTo(200, 175, 110, 175, 110, 100);//画左下半椭圆 cxt.moveTo(200, 100); cxt.bezierCurveTo(200, 25, 290, 25, 290, 100); cxt.bezierCurveTo(290, 175, 200, 175, 200, 100); cxt.fill(); cxt.stroke();

    眼睛

    接着画左右眼球:

    /*右眼球*/ cxt.beginPath(); cxt.fillStyle = '#000'; cxt.arc(230, 130, 12, 0, 2 * Math.PI); cxt.fill(); cxt.stroke(); /*左眼球*/ cxt.beginPath(); cxt.fillStyle = '#000'; cxt.arc(170, 130, 12, 0, 2 * Math.PI); cxt.fill(); cxt.stroke();

    左右眼球:

    左右眼球

    接着画鼻子:

    cxt.beginPath(); cxt.arc(200, 165, 25, 0, 2 * Math.PI); cxt.fillStyle = '#d05823'; cxt.fill(); cxt.stroke();

    鼻子:

    鼻子

    接着画胡须:

    (); cxt.moveTo(80, 175); cxt.lineTo(150, 195); cxt.moveTo(80, 200); cxt.lineTo(150, 205); cxt.moveTo(80, 225); cxt.lineTo(150, 215); (200, 195); cxt.lineTo(200, 290); (250, 195); cxt.lineTo(320, 175); cxt.moveTo(250, 205); cxt.lineTo(320, 200); cxt.moveTo(250, 215); cxt.lineTo(320, 225); cxt.stroke();

    胡须:

    胡须

     

    1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

    相关文章
    • canvas绘制七巧板

      canvas绘制七巧板

      2017-04-23 15:03

    • Canvas学习:绘制文本

      Canvas学习:绘制文本

      2017-04-23 08:01

    • Canvas QML Type

      Canvas QML Type

      2017-04-22 15:01

    • HTML5 canvas随机画线和小方块基础反弹运动实例

      HTML5 canvas随机画线和小方块基础反弹运动实例

      2017-04-21 16:07

    网友点评