使用 HTML5 Canvas 繪製陰影


在 HTML5 canvas 中,您可以為形狀、線條、文字和影像新增陰影,使其具有深度感。使用 HTML5 canvas 時,您可以使用以下 canvas 上下文屬性來新增陰影。

  • shadowOffsetX()

  • shadowOffsetY()

  • shadowColor()

  • shadowBlur()

shadowOffsetX()

此屬性用於獲取或設定陰影相對於頁面水平方向的距離。要更改陰影的位置,可以使用正數或負數。預設值為零。

語法

以下是 shadowOffsetX() 的語法:

ctx.shadowOffsetX = h_distance;

其中 h_distance 表示陰影相對於頁面的水平距離。

shadowOffsetY()

此屬性用於獲取或設定陰影相對於頁面垂直方向的距離。要更改陰影的位置,可以使用正數或負數。預設值為零。

語法

以下是 shadowOffsetY() 的語法:

ctx.shadowOffsetX = v_distance;

其中 v_distance 表示陰影相對於頁面的垂直距離。

shadowColor()

shadowColor() 屬性用於獲取或設定陰影的顏色。

語法

以下是 shadowColor() 的語法:

ctx.shadowColor

其中 shadowColor 是 CSS 顏色。

shadowBlur()

shadowBlur() 屬性用於獲取或設定應用於陰影的當前模糊值。

語法

以下是 shadowBlur() 的語法:

ctx.shadowBlur = blur_value

其中 blur_value 是應用於陰影的模糊量。

讓我們透過以下示例來了解如何使用 HTML5 canvas 繪製陰影。

示例

在以下示例中,我們建立了一系列具有不同模糊度的正方形。

<!DOCTYPE html>
<html>
   <body>
      <canvas id="mytutorial" width="500" height="600"></canvas> 
      <script>
      var canvas = document.getElementById("mytutorial");
      if (canvas.getContext) 
      {
         var ctx = canvas.getContext('2d');
         ctx.shadowColor = "black";
         ctx.shadowBlur = 5;
         ctx.shadowOffsetX = 5;
         ctx.shadowOffsetY = 5;
         ctx.shadowColor = "green";
         ctx.strokeRect(60, 60, 210, 210);
         ctx.shadowColor = "blue";
         ctx.strokeRect(85, 85, 210, 210);
      }
      </script>
   </body> 
</html>

輸出

當指令碼執行時,它將在網頁上生成一個輸出,顯示一系列具有不同陰影模糊度的正方形。

示例

在以下示例中,我們為畫布建立了一個陰影模糊。

<!DOCTYPE html>
<html>
   <body>
      <canvas id="mytutorial" width="300" height="150"></canvas>
      <script>
      var c = document.getElementById("mytutorial");
      var ctx = c.getContext("2d");
      ctx.shadowBlur = 20;
      ctx.shadowColor = "blue";
      ctx.fillStyle = "green";
      ctx.fillRect(20, 20, 100, 80);
      </script>
   </body>
</html>

輸出

執行上述指令碼後,它將在網頁上生成一個輸出,其中包含一個用綠色填充的畫布,並帶有藍色陰影模糊。

示例

在以下示例中,我們為文字建立了一個陰影。

<!DOCTYPE html>
<html>
   <body>
      <canvas id="mytutorial" width="500" height="200"></canvas>
      <script>
      var canvas = document.getElementById("mytutorial");
      if (canvas.getContext)
      {
         var ctx = canvas.getContext('2d');
         ctx.fillStyle = 'green';
         ctx.shadowColor = 'grey';
         ctx.shadowBlur = 2;
         ctx.shadowOffsetX = 8;
         ctx.shadowOffsetY = 9;
         ctx.font = 'italic 32px sans-serif ';
         ctx.fillText('TUTORIALSPOINT', 10, 150);
      }
      </script>
   </body> 
</html>

輸出

當用戶嘗試執行指令碼時,輸出視窗彈出,顯示指令碼中使用的文字以及新增到網頁上文字的陰影。

示例

讓我們看看以下示例,我們為文字建立了一個模糊。

<!DOCTYPE HTML>
<html>
   <head>
      <style>
         #test {
            width: 100px;
            height:100px;
            margin: 0px auto;
         }
      </style>

      <script type>
         function drawShape(){
            // get the canvas element using the DOM
            var canvas = document.getElementById('mycanvas');
            // Make sure we don't execute when canvas isn't supported
                 
            if (canvas.getContext){
               // use getContext to use the canvas for drawing
               var ctx = canvas.getContext('2d');
               ctx.shadowOffsetX = 2;
               ctx.shadowOffsetY = 2;
               ctx.shadowBlur = 2;
               ctx.shadowColor = "rgba(0, 0, 0, 0.5)";
               ctx.font = "20px Times New Roman";
               ctx.fillStyle = "Black";
               ctx.fillText("This is shadow test", 5, 30);
            } else {
               alert('You need Safari or Firefox 1.5+ to see this demo.');
            }
         }
      </script>
   </head>

   <body id = "test" onload = "drawShape();">
      <canvas id = "mycanvas"></canvas>
   </body>
</html>

輸出

當指令碼執行時,它將在網頁上生成一個輸出,其中包含添加了陰影模糊的文字。

更新於: 2023年10月11日

1K+ 次檢視

開啟你的 職業生涯

透過完成課程獲得認證

立即開始
廣告