官术网_书友最值得收藏!

  • HTML5 Canvas Cookbook
  • Eric Rowell
  • 341字
  • 2021-08-27 12:08:06

Fun with Bezier curves: drawing a cloud

In this recipe, we will learn how to draw a custom shape by connecting a series of Bezier curve sub paths to create a fluffy cloud.

Fun with Bezier curves: drawing a cloud

How to do it...

Follow these steps to draw a fluffy cloud in the center of the canvas:

  1. Define a 2D canvas context:
    window.onload = function(){
        var canvas = document.getElementById("myCanvas");
        var context = canvas.getContext("2d");
  2. Draw a cloud by connecting six Bezier curves:
        var startX = 200;
        var startY = 100;
        
      // draw cloud shape
        context.beginPath(); 
        context.moveTo(startX, startY);
        context.bezierCurveTo(startX - 40, startY + 20, startX - 40, startY + 70, startX + 60, startY + 70);
        context.bezierCurveTo(startX + 80, startY + 100, startX + 150, startY + 100, startX + 170, startY + 70);
        context.bezierCurveTo(startX + 250, startY + 70, startX + 250, startY + 40, startX + 220, startY + 20);
        context.bezierCurveTo(startX + 260, startY - 40, startX + 200, startY - 50, startX + 170, startY - 30);
        context.bezierCurveTo(startX + 150, startY - 75, startX + 80, startY - 60, startX + 80, startY - 30);
        context.bezierCurveTo(startX + 30, startY - 75, startX - 20, startY - 60, startX, startY);
        context.closePath();
  3. Define a radial gradient with the createRadialGradient() method and fill the shape with the gradient:
      //add a radial gradient
        var grdCenterX = 260;
        var grdCenterY = 80;
        var grd = context.createRadialGradient(grdCenterX, grdCenterY, 10, grdCenterX, grdCenterY, 200);
        grd.addColorStop(0, "#8ED6FF"); // light blue
        grd.addColorStop(1, "#004CB3"); // dark blue
        context.fillStyle = grd;
        context.fill();
  4. Set the line width and stroke the cloud:
      // set the line width and stroke color
        context.lineWidth = 5;
        context.strokeStyle = "#0000ff";
        context.stroke();
    };
  5. Embed the canvas tag inside the body of the HTML document:
    <canvas id="myCanvas" width="600" height="250" style="border:1px solid black;"> 
    </canvas>

How it works...

To draw a fluffy cloud using the HTML5 canvas API, we can connect several Bezier curves to form the perimeter of the cloud shape. To create the illusion of a bulbous surface, we can create a radial gradient using the createRadialGradient() method, set the gradient colors and offsets using the addColorStop() method, set the radial gradient as the fill style using fillStyle, and then apply the gradient using fill().

主站蜘蛛池模板: 兴宁市| 安乡县| 芜湖县| 乐陵市| 客服| 离岛区| 莲花县| 长白| 平南县| 江阴市| 黑龙江省| 梨树县| 闵行区| 房产| 巴里| 五家渠市| 盐源县| 大宁县| 二手房| 娱乐| 巴东县| 固始县| 福清市| 成武县| 大冶市| 交口县| 鄂州市| 周口市| 兴和县| 隆尧县| 铁岭市| 阿勒泰市| 盐津县| 嘉兴市| 海淀区| 县级市| 孟村| 酉阳| 万安县| 临沧市| 泊头市|