HTML5 Canvasで影を描画する方法|shadowプロパティの使い方を解説
HTML5 Canvasで影を描く基本
HTML5のCanvas APIでは、テキストや図形に対して簡単に影(シャドウ)を付けることができます。影の描画には、描画コンテキスト(ctx)が持つ4つの影関連プロパティを使用します。
サンプルコード
以下は、Canvas上に描いたテキストへ影を適用する完全なサンプルです。
<!DOCTYPE HTML>
<html>
<head>
<style>
#test {
width: 100px;
height: 100px;
margin: 0px auto;
}
</style>
<script>
function drawShape(){
// DOMを使ってcanvas要素を取得
var canvas = document.getElementById('mycanvas');
// canvas非対応ブラウザの場合は実行しない
if (canvas.getContext){
// getContextで2D描画コンテキストを取得
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('このデモを表示するにはSafariまたはFirefox 1.5+が必要です。');
}
}
</script>
</head>
<body id="test" onload="drawShape();">
<canvas id="mycanvas"></canvas>
</body>
</html>
影に関連する4つのプロパティ
- shadowOffsetX:影の水平方向のずらし量(オフセット)をピクセル単位で指定します。正の値で右方向、負の値で左方向に移動します。
- shadowOffsetY:影の垂直方向のずらし量をピクセル単位で指定します。正の値で下方向、負の値で上方向に移動します。
- shadowBlur:影のぼかし度合いを指定します。値が大きいほど、影は柔らかくぼやけた印象になります。
- shadowColor:影の色を指定します。通常のカラーコードに加え、上記の例のように
rgba()形式を使えば半透明の影も表現できます。
コードのポイント
まずdocument.getElementById()でcanvas要素を取得し、getContext('2d')で2D描画コンテキストを取得します。canvas.getContextが存在するかどうかを判定することで、Canvas非対応の古いブラウザへの対応も可能です。
その後、shadow系プロパティを設定してからfillText()でテキストを描画すると、設定した影が自動的に適用されます。なお、これらのプロパティはfillRect()などの図形描画にも同様に作用します。
shadowBlurやshadowColorの値を変えてみると、影の見た目がどのように変わるかを確認できます。ぜひ実際に数値を調整しながら、好みの影の演出を探してみてください。
-
HTML5 Canvasで長方形を描画する方法をわかりやすく解説
HTML5の<canvas>タグは、JavaScriptなどのスクリプトを使ってグラフィックやアニメーションを描画するための要素です。HTML5で新たに導入されたタグであり、動的なビジュアル表現を実現するための強力な機能を提供します。canvas要素には「getContext」というDOMメソッドが用意されています。このメソッドはレンダリングコンテキストと、それに付随する描画機能一式を取得するもので、引数としてコンテキストの種類(ここでは2D描画を表す「2d」)を1つ指定します。fillRect()メソッドで長方形を描くHTML5 Canvasで長方形を描画するには、fillRec
-
HTML5のCanvasにSVGファイルを描画する方法
Canvas(キャンバス)にSVGを描画するには、SVGを画像として扱う必要があります。まず、HTMLコンテンツを含めるための<foreignObject>要素を使ってSVGデータを構築し、その後、生成したSVG画像をCanvas上に描画します。 具体的な流れは以下の通りです。 処理の手順 SVG文字列を作成する:<svg>要素の中に<foreignObject>要素を配置し、その中にXHTML名前空間(xmlns=https://www.w3.org/1999/xhtml)を指定したHTMLを記述します。 Blobオブジェクトに変換する:作成したSVG文