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

  • Canvas Cookbook
  • Bhushan Purushottam Joshi
  • 236字
  • 2021-07-16 11:03:14

Drawing a quadratic curve

In this recipe, you will learn how to draw a quadratic curve. The quadratic curve provides much more flexibility. These curves can be used to create custom shapes in numerous drawings. You will find one implementation in the next recipe:

Drawing a quadratic curve

How to do it...

Here is a simple code to draw a quadratic curve:

<html>
  <head>
    <title>Arcs</title>
    <script>
    function init()
    {
      can  = document.getElementById("MyCanvasArea");
      ctx = can.getContext("2d");

      //call to the function to draw curve
      drawQuadraticCurve(50,100,150,30,250,100,'#df34ef',7);
              
      //function to draw quadratic curve
      function drawQuadraticCurve(xStart,yStart,xControl, yControl, xEnd, yEnd,color,width)
      {
        ctx.beginPath();
        ctx.strokeStyle=color;
        ctx.lineJoin="round";
        ctx.lineWidth=width;
        ctx.moveTo(xStart,yStart);  
        ctx.quadraticCurveTo(xControl, yControl, xEnd, yEnd);  
        ctx.stroke();
        ctx.closePath();
      }
    } 
    </script>
    </head>
    <body onload="init()">
    <canvas ID="MyCanvasArea" width="300" height="200" style="border:2px solid black;">
    your browser doesn't support canvas
    </canvas>
    </body>
</html>

How it works...

The API function is quadraticCurveTo(cpX,cpY,epX,epY).

In this function, cpX and cpY are coordinates of the control point, and epX and epY are coordinates of the end point, the drawing has to start from some point. However, it is not part of this function. You have to move to a point that you want to draw from. This is done by using the moveTo() function.

Refer to the diagram:

How it works...

Observe the points in the diagram. The parameters passed to the quadraticCurveTo() function are coordinates of the control point and end point. Before this function is called you need to call a function moveTo() from where you specify the start/context point.

There's more...

Try the following:

  • Change the control point to (150,150)
  • Change the other coordinates and observe the output
主站蜘蛛池模板: 江西省| 灵川县| 龙井市| 正镶白旗| 肥乡县| 明水县| 凤阳县| 万州区| 西乌| 宁武县| 姜堰市| 新宁县| 安丘市| 璧山县| 荔波县| 固原市| 秭归县| 门源| 色达县| 平昌县| 上蔡县| 治多县| 大悟县| 营山县| 靖远县| 临桂县| 普陀区| 仲巴县| 安乡县| 河曲县| 白山市| 北碚区| 五原县| 洛隆县| 江津市| 从化市| 赤峰市| 陈巴尔虎旗| 那曲县| 东阳市| 曲阜市|