HTML5 Canvas教程(4)

1.4.1 画路径

路径是由多条子路径连接构成的。每条子路径的终止点就将作为新的上下文点。我们可以使用

lineTo(), arcTo(), quadraticCurveTo() 和 bezierCurveTo() 创建新的子路径。每次要开始画一条路径的时候就要使用 beginPath() 方法。

如:

<script>   context.beginPath();

</script>

效果图

 

代码

<!DOCTYPE HTML>

<html>

  <head>

    <style>       body {         margin: 0px;         padding: 0px;

      }

      #myCanvas {

        border: 1px solid #9C9898;

      }

    </style>     <script>

      window.onload = function() {

        var canvas = document.getElementById("myCanvas");         var context = canvas.getContext("2d");

        context.beginPath();         context.moveTo(100, 20);

        // 第一条直线

        context.lineTo(200, 160);

        // 二次曲线

        context.quadraticCurveTo(230, 200, 250, 120);

        // 贝塞尔曲线

        context.bezierCurveTo(290, -40, 300, 200, 400, 150);

        // 第二条直线

        context.lineTo(500, 90);

        context.lineWidth = 5;         context.strokeStyle = "blue";         context.stroke();       };

    </script>

  </head>

  <body>

    <canvas id="myCanvas" width="578" height="200"></canvas>

  </body>

</html>

关于路径的说明

 

1.4.2 线条的连接样式

HTML5 canvas支持3种线条的连接样式,包括: miter, round, 和 bevel。 设定连接样式是用 lineJoin 属性设定。缺省情况下,将使用 miter 样式。

如:

<script>

  context.lineJoin = 'round'; </script>

注意:如果线条比较细,而且之间的连接并不形成很尖锐的角度,那么不同的连接样式之间可能会

比较难以区分。

效果图,分别为 Miter, Round 和 Bevel

 

代码

<!DOCTYPE HTML>

<html>

  <head>

    <style>       body {         margin: 0px;         padding: 0px;

      }

      #myCanvas {

        border: 1px solid #9C9898;

      }

    </style>     <script>

      window.onload = function() {

        var canvas = document.getElementById("myCanvas");         var context = canvas.getContext("2d");

        // 设置线的宽度

        context.lineWidth = 25;

        // 最左边的是 miter 样式         context.beginPath();         context.moveTo(99, 150);         context.lineTo(149, 50);         context.lineTo(199, 150);         context.lineJoin = "miter";         context.stroke();

        // 中间的是 round 样式         context.beginPath();         context.moveTo(239, 150);         context.lineTo(289, 50);         context.lineTo(339, 150);         context.lineJoin = "round";

        context.stroke();

        // 最右边的是 bevel 样式         context.beginPath();         context.moveTo(379, 150);         context.lineTo(429, 50);         context.lineTo(479, 150);         context.lineJoin = "bevel";         context.stroke();       };

    </script>

  </head>

  <body>

    <canvas id="myCanvas" width="578" height="200"></canvas>

  </body>

</html>

1.4.3 圆角画圆角使用方法 arcTo() 。此方法需要一个控制点、一个终止点和半径作为必要的参数。如:

<script>

  context.arcTo(controlX,controlY,endX,endY,radius); </script>

效果图

 

代码

<!DOCTYPE HTML>

<html>

  <head>

    <style>       body {         margin: 0px;         padding: 0px;       }

      #myCanvas {

        border: 1px solid #9C9898;

      }

    </style>     <script>

      window.onload = function() {

        var canvas = document.getElementById("myCanvas");

        var context = canvas.getContext("2d");         var rectWidth = 200;         var rectHeight = 100;         var rectX = 189;         varrectY = 50;         var cornerRadius = 50;

        context.beginPath();         context.moveTo(rectX, rectY);

        context.lineTo(rectX + rectWidth - cornerRadius, rectY);         context.arcTo(rectX + rectWidth, rectY, rectX + rectWidth, rectY

+ cornerRadius, cornerRadius);

        context.lineTo(rectX + rectWidth, rectY + rectHeight);         context.lineWidth = 5;         context.stroke();       };

    </script>

  </head>

  <body>

    <canvas id="myCanvas" width="578" height="200"></canvas>

  </body>

</html>