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

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().

主站蜘蛛池模板: 永春县| 桃源县| 武山县| 敖汉旗| 济南市| 唐河县| 轮台县| 普安县| 浦东新区| 滨州市| 广昌县| 博客| 和林格尔县| 郯城县| 涿鹿县| 沂南县| 保德县| 公安县| 岱山县| 分宜县| 浦东新区| 济阳县| 北碚区| 都昌县| 福鼎市| 永康市| 肥东县| 泸溪县| 石渠县| 林甸县| 永仁县| 平定县| 荆门市| 西乌| 广灵县| 上杭县| 富蕴县| 荆门市| 哈尔滨市| 蕉岭县| 洱源县|