zoukankan      html  css  js  c++  java
  • 【Canvas】树冠

    <!DOCTYPE html>
    <html>
    <head>
      <meta charset="utf-8">
      <title>JS Bin</title>
    </head>
    <body>
      <canvas id='drawRect' width='300' height='300'></canvas>
    </body>
    </html>
    function darwTrails(){
      var canvas = document.getElementById('drawRect');
      var context = canvas.getContext('2d');
      context.save();
      context.translate(130,250);
      createTree(context);
      context.restore();
    }
    
    function createTree(context){
      context.beginPath();
      context.moveTo(-25,-50);
      context.lineTo(-10,-80);
      context.lineTo(-20,-80);
      context.lineTo(-5,-110);
      context.lineTo(-15,-110);
      context.lineTo(0,-140);
      context.lineTo(15,-110);
      context.lineTo(5,-110);
      context.lineTo(20,-80);
      context.lineTo(10,-80);
      context.lineTo(25,-50);
      context.lineWidth=4;
      context.lineJoin ='round';
      context.strokeStyle='#663300';
      context.lineCap='butt';
      context.fillStyle='#339900';
      context.fill();
      context.closePath();
      context.stroke();
    //树干

       context.fillStyle='#663300';
       context.fillRect(-5,-50,10,50);

    
    }
    
    window.addEventListener('load',darwTrails,true);

    曲线

    function darwTrails(){
      var canvas = document.getElementById('drawRect');
      var context = canvas.getContext('2d');
      context.save();
      context.translate(130,250);
      createTree(context);
      context.restore();  
      context.translate(-10,350); 
      context.beginPath();
      context.moveTo(0,0);
      context.quadraticCurveTo(170,-50,260,-190);
      context.quadraticCurveTo(310,-250,410,-250);
      context.strokeStyle='#663300';
      context.lineWidth=20;
      context.stroke();
      context.restore();
    }
    
    function createTree(context){
      context.beginPath();
      context.moveTo(-25,-50);
      context.lineTo(-10,-80);
      context.lineTo(-20,-80);
      context.lineTo(-5,-110);
      context.lineTo(-15,-110);
      context.lineTo(0,-140);
      context.lineTo(15,-110);
      context.lineTo(5,-110);
      context.lineTo(20,-80);
      context.lineTo(10,-80);
      context.lineTo(25,-50);
      context.lineWidth=4;
      context.lineJoin ='round';
      context.strokeStyle='#663300';
      context.lineCap='butt';
      context.fillStyle='#339900';
      context.fill();
      context.closePath();
      context.stroke();
      //树干
       context.fillStyle='#663300';
       context.fillRect(-5,-50,10,50);
    
    }
    
    window.addEventListener('load',darwTrails,true);

    用图片来填充树干

      var bark = new Image();
      bark.src = "bark.jpg";
      bark.onload = function(){
          darwTrails();
      }
      
      
    function darwTrails(){
      var canvas = document.getElementById('drawRect');
      var context = canvas.getContext('2d');
      context.save();
      context.translate(130,250);
      createTree(context);
      context.restore();  
      context.translate(-10,350); 
      context.beginPath();
      context.moveTo(0,0);
      context.quadraticCurveTo(170,-50,260,-190);
      context.quadraticCurveTo(310,-250,410,-250);
      context.strokeStyle='#663300';
      context.lineWidth=20;
      context.stroke();
      context.restore();
    }
    
    function createTree(context){
      context.beginPath();
      context.moveTo(-25,-50);
      context.lineTo(-10,-80);
      context.lineTo(-20,-80);
      context.lineTo(-5,-110);
      context.lineTo(-15,-110);
      context.lineTo(0,-140);
      context.lineTo(15,-110);
      context.lineTo(5,-110);
      context.lineTo(20,-80);
      context.lineTo(10,-80);
      context.lineTo(25,-50);
      context.lineWidth=4;
      context.lineJoin ='round';
      context.strokeStyle='#663300';
      context.lineCap='butt';
      context.fillStyle='#339900';
      context.fill();
      context.closePath();
      context.stroke();
      //树干
       //context.fillStyle='#663300';
      // context.fillRect(-5,-50,10,50);
       context.drawImage(bark,-5,-50,10,50); //bark表示图片,后面的表示从(-5,50)开始宽为10,高为50的矩形
    
    }
     

    渐变填充树干

    var trunkGradient = context.createLinearGradient(-5,-50,5,-50);  //水平渐变
    trunkGradient.addColorStop(0,'#663300');
    trunkGradient.addColorStop(0.4,'#996600');
    trunkGradient.addColorStop(1,'#552200');
    context.fillStyle = trunkGradient;
    context.fillRect(-5,-50,10,50);

    放射性渐变

    var c=document.getElementById("drawRect");
    var ctx=c.getContext("2d");
    var grd=ctx.createRadialGradient(75,50,5,90,60,100);//(x,y,r)(x1,y1,r1)
    grd.addColorStop(0,"red");
    grd.addColorStop(0.4,"yellow");
    grd.addColorStop(1,"white");
    ctx.fillStyle=grd;
    ctx.fillRect(10,10,150,100);

    使用背景图片(重复)填充曲线

    var gravel = new Image();
    gravel.src = "gravel.jpg";
    gravel.onload = function () {
    drawTrails();
    }

      context.quadraticCurveTo(170,-50,260,-190);
      context.quadraticCurveTo(310,-250,410,-250);
      context.strokeStyle = context.createPattern(gravel, 'repeat');
      context.lineWidth=20;
      context.stroke();

    绘制一棵放大的树

      /*绘制第二棵树*/
      context.save();
      context.translate(260,500);
    
      
      /*将第二棵树的宽高分别放大至原来的2*/
      context.scale(2,2);
      createTree(context);
      context.restore();

    文字

      context.save();
      context.font='68px impact';//字号 字体
      context.fillStyle='#996600';
      context.textAlign ='center';
      context.fillText('Happy Trails',200,60,400);
      context.restore();

    阴影

      context.shadowColor = 'rgba(0,0,0,0.2)';
      context.shadowOffsetX = 15;
      context.shadowOffsetY = -10;  //负数表示向上移动阴影
      context.shadowBlur = 2;   //高斯模糊 值越大,越模糊
  • 相关阅读:
    闲谈系列之一——数据库主键GUID
    一个简单通用权限管理系统,求各位帮忙看看
    php 计算指定年份的周总数与及第几周的开始日期和结束日期(从周一开始)
    创建虚拟机流程详细过程链接
    阿里云CDN加速设置
    sublime Text3 快捷键
    Linux命令(centos7)
    分布式数据库
    mysql 分区和分表
    Linux crontab 命令格式与详细例子
  • 原文地址:https://www.cnblogs.com/positive/p/3855394.html
Copyright © 2011-2022 走看看