1. 程式人生 > >HTML5 Canvas 教程:六、填充樣式

HTML5 Canvas 教程:六、填充樣式

六、填充樣式 Fill Style

 

6.1純色填充 Color Fill

 

要用純色填充HTML5畫布形狀,可以將fillStyle屬性設定為顏色字串(如藍色)、十六進位制值(如0000FF)或RGB值(如rgb(0,0255),然後可以使用fill()方法來填充形狀。除非另有宣告,否則HTML5畫布形狀的預設填充樣式為黑色。

 

注意:在為形狀設定填充和筆劃時,請確保在stroke()之前使用fill()。否則,填充將重疊。

 

<!DOCTYPE HTML>

<html>

  <head>

    <style>

      body {

        margin: 0px;

        padding: 0px;

      }

    </style>

  </head>

  <body>

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

    <script>

      var canvas = document.getElementById('myCanvas'

);

      var context = canvas.getContext('2d');

 

      // begin custom shape

      context.beginPath();

      context.moveTo(17080);

      context.bezierCurveTo(130100130150230150);

      context.bezierCurveTo(250180320180340150);

      context.bezierCurveTo(420150420120390100);

      context.bezierCurveTo(430403703034050);

      context.bezierCurveTo(32052502025050);

      context.bezierCurveTo(20051502017080);

 

      // complete custom shape

      context.closePath();

      context.lineWidth = 5;

      context.fillStyle = '#8ED6FF';

      context.fill();

      context.strokeStyle = 'blue';

      context.stroke();

    </script>

  </body>

</html>

 

以上程式碼演示了在畫布上繪製一個自定義閉合形狀,並用純色填充。

 

 

6.2線形漸變填充 Linear Gradient

 

為了在HTML5畫布上進行線性漸變填充,可以使用createLinearGradient()方法。線性漸變通過宣告漸變方向來定義。一旦建立了漸變,就可以使用addColorStop屬性插入顏色。

 

線性漸變的方向從createLinearGradient()定義的假象線的起點移動到終點。在本教程中,使用了兩種顏色停頓,一種用於在漸變開始的淺藍色,一種用於漸變結束的深藍色。顏色停止沿虛線放置在0和1之間,其中0位於起始點,1位於結束點。

 

<!DOCTYPE HTML>

<html>

  <head>

    <style>

      body {

        margin: 0px;

        padding: 0px;

      }

    </style>

  </head>

  <body>

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

    <script>

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

      var context = canvas.getContext('2d');

      context.rect(00, canvas.width, canvas.height);

 

      // add linear gradient

      var grd = context.createLinearGradient(00, canvas.width, canvas.height);

      // light blue

      grd.addColorStop(0'#8ED6FF');   

      // dark blue

      grd.addColorStop(1'#004CB3');

      context.fillStyle = grd;

      context.fill();

    </script>

  </body>

</html>

 

以上程式碼演示了在畫布上繪製一個矩形,並使用線形漸變進行填充。

 

 

6.3徑向漸變填充 Radial Gradient

 

為了在HTML5畫布上進行徑向漸變填充,我們可以使用createRadialGradient()方法。徑向漸變定義為兩個假想圓:起始圓和結束圓,漸變從起始圓開始,向結束圓移動。

 

<!DOCTYPE HTML>

<html>

  <head>

    <style>

      body {

        margin: 0px;

        padding: 0px;

      }

    </style>

  </head>

  <body>

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

    <script>

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

      var context = canvas.getContext('2d');

      context.rect(00, canvas.width, canvas.height);

 

      // create radial gradient

      var grd = context.createRadialGradient(238501023850300);

      // light blue

      grd.addColorStop(0'#8ED6FF');

      // dark blue

      grd.addColorStop(1'#004CB3');

 

      context.fillStyle = grd;

      context.fill();

    </script>

  </body>

</html>

 

以上程式碼演示了在畫布上繪製一個矩形,並用徑向漸變填充。

 

 

6.4模式填充 Pattern Fill

 

為了在HTML5畫布上進行模式填充,我們可以使用createPattern()方法來返回一個模式物件,將fillStyle屬性設定為模式物件,然後使用fill()方法填充形狀。createPattern()方法需要一個影象物件和一個重複選項,它可以是repeat、repeat-x、repeat-y或no-repeat。除非另有宣告,否則重複選項預設為repeat。

 

<!DOCTYPE HTML>

<html>

  <head>

    <style>

      body {

        margin: 0px;

        padding: 0px;

      }

    </style>

  </head>

  <body>

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

    <script>

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

      var context = canvas.getContext('2d');

 

      var imageObj = new Image();

      imageObj.onload = function() {

        var pattern = context.createPattern(imageObj, 'repeat');

 

        context.rect(00, canvas.width, canvas.height);

        context.fillStyle = pattern;

        context.fill();

      };

      imageObj.src = 'wood-pattern.png';

    </script>

  </body>

</html>

 

以上程式碼演示了在畫布上建立一個矩形,並用背景圖片重複填充。