globalCompositeOperation属性は、図形やイメージの合成方法を指定する際に使用します。
以下のサンプルは、青い四角形を描いたあとに、一部領域が重なるように赤い四角形を描いたものです。 通常は一番最後の「指定なし」のように表示されますが、 globalCompositeOperation属性を使用することで、様々な合成方法を指定し分けることができます。
初期値は source-over です。 すべての値は大文字と小文字が厳密に区別されます。
指定できる値は上記の通りで、これら以外の値を指定しても原則として無視されます。 ただし、ブラウザベンダーによって拡張機能が追加されることがあるかもしれません。 その場合のキーワードの書式は「ベンダー名-機能名」となると定義されています。
現在のところ、FirefoxとGoogle Chrome・Safariでは、一部キーワードの解釈が異なるようです。 また、IE9はglobalCompositeOperation属性をサポートしていないようです。
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>canvasで図形を描く</title>
<script type="text/javascript">
<!--
function test() {
//描画コンテキストの取得
var canvas = document.getElementById('sample');
if (canvas.getContext) {
var context = canvas.getContext('2d');
//ここに具体的な描画内容を指定する
//■■■ destination-overの場合 ■■■
//青い四角形を描く
context.fillStyle = "rgb(0, 0, 255)";
context.fillRect(20,20,50,50);
//合成の形式を指定する
context.globalCompositeOperation = "destination-over";
//赤い四角形を描く
context.fillStyle = "rgb(255, 0, 0)";
context.fillRect(40,40,50,50);
//いったん初期値に戻す
context.globalCompositeOperation = "source-over";
//■■■ lighterの場合 ■■■
//青い四角形を描く
context.fillStyle = "rgb(0, 0, 255)";
context.fillRect(120,20,50,50);
//合成の形式を指定する
context.globalCompositeOperation = "lighter";
//赤い四角形を描く
context.fillStyle = "rgb(255, 0, 0)";
context.fillRect(140,40,50,50);
}
}
//-->
</script>
</head>
<body onLoad="test()">
<h2>Canvasで図形を描く</h2>
<canvas width="300" height="150" id="sample" style="background-color:yellow;">
図形を表示するには、canvasタグをサポートしたブラウザが必要です。
</canvas>
</body>
</html>