canvas内の文字や画像に影(シャドウ)を付ける方法について解説

HOME
更新日:2017.03.02
HOMEJavaScript入門(HTML5編) > 影を付ける

影を付ける-JavaScript入門(HTML5編)

このページでは、画像や文字に影(シャドウ)を付ける方法について解説します。

影の設定

最初に影の設定をする方法を見ておきましょう。

context.shadowColor = 色
影の色を指定します。
context.shadowBlur = 数値
影のぼかし具合を指定します。数値が大きいほどぼかしが強くなります。
context.shadowOffsetX = 数値
影の横方向のずれ具合を指定します。
context.shadowOffsetY = 数値
影の縦方向のずれ具合を指定します。

上記の4種類の値を指定します。

文字にシャドウ効果を付ける

まずは文字に影を付けてみます。

<canvas id="cv1" width="360" height="240"></canvas>
<script>
  var ctx = document.getElementById("cv1").getContext("2d");

  ctx.font = "italic 64px Arial";
  ctx.fillStyle = "green";
  
  ctx.shadowColor = "red";  //赤色の影を付ける
  ctx.shadowBlur  = 0;      //ぼかしを0にする
  ctx.shadowOffsetX = 3;    //横に3pxずらす
  ctx.shadowOffsetY = 1;    //縦に1pxずらす
   
  ctx.fillText("JavaScript",10,140);
</script>

<描画結果>canvasタグにはCSSで二重線の枠を付けています

ぼかしを0にすると、サンプルのようにくっきりした影が付きます。

図形にシャドウ効果を付ける

続いて、図形に影を付けてみます。

<canvas id="cv2" width="360" height="240"></canvas>
<script>
  var ctx = document.getElementById("cv2").getContext("2d");

  ctx.fillStyle = "aqua";
  
  ctx.shadowColor = "blue";  //青色の影を付ける
  ctx.shadowBlur  = 5;       //ぼかしを5にする
  ctx.shadowOffsetX = 10;    //横に10pxずらす
  ctx.shadowOffsetY = 10;    //縦に10pxずらす
   
  ctx.beginPath();
  ctx.arc(180,120,80,0,Math.PI*2,true);
  ctx.fill();
</script>

<描画結果>canvasタグにはCSSで二重線の枠を付けています

円の背後に影を付けてみました。

画像にシャドウ効果を付ける

最後は画像に影を付けてみます。

<head>
<script>
  var img = new Image();
  img.src = "img/dog.jpg";
</script>
</head>

<body onload="draw()">

<canvas id="cv3" width="360" height="240"></canvas>
<script>
function draw(){
  var ctx = document.getElementById("cv3").getContext("2d");

  ctx.shadowColor = "gray";  //灰色の影を付ける
  ctx.shadowBlur  = 10;      //ぼかしを10にする
  ctx.shadowOffsetX = 20;    //横に20pxずらす
  ctx.shadowOffsetY = 15;    //縦に15pxずらす

  ctx.drawImage(img,10,10,240,160);
}   
</script>

<描画結果>canvasタグにはCSSで二重線の枠を付けています

写真の背後にぼやけた影ができ、少し浮いたような効果を出すことができました。