miterLimit属性は、線の接合箇所をmiter表示にする(折れ線箇所を面取りしないで尖らせる)限界を指定する際に使用します。
lineJoin属性の値が miter (初期値)の場合、2つの線分が接合する箇所はmiter表示になりますが、
この際、2つの線分の接合角度が鋭角であるほど、尖った部分が鋭く長く飛び出すことになります。
miterLimit属性では、接合箇所がどのくらい尖っている場合にmiter表示にするか、
あるいは、bevel表示(面取り)にするかの限界値を任意の数値で指定することができます。
miterLimit属性の値には、lineWidth属性で指定する線幅の半分の長さに対する比率を指定します。
例えば、lineWidth=20の線分に対してmiterLimit=2.0を指定した場合には、10×2.0=20となります。
この例の場合、尖った部分の距離が20を超えない箇所はmiter表示(留め継ぎ)、尖った部分の距離が20を超えて飛び出す箇所はbevel表示(面取り)となります。
miterLimit属性の値に指定できるのは0より大きい有限の数値のみで、それ以外の値を指定しても無視されます。
miterLimit属性を指定しない場合の初期値は 10.0 です。
<!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');
//ここに具体的な描画内容を指定する
//線の幅20を指定する
context.lineWidth = 20;
//miterLimit属性に 2.0 を指定する
context.miterLimit = 2.0;
//2つの線分の接合角度を広めにする
context.beginPath();
context.moveTo(10,100);
context.lineTo(60,40);
context.lineTo(110,100);
context.stroke();
//2つの線分の接合角度をやや狭くする
context.beginPath();
context.moveTo(130,100);
context.lineTo(170,40);
context.lineTo(210,100);
context.stroke();
//2つの線分の接合角度をより狭くする
context.beginPath();
context.moveTo(230,100);
context.lineTo(260,40);
context.lineTo(290,100);
context.stroke();
}
}
//-->
</script>
</head>
<body onLoad="test()">
<h2>Canvasで図形を描く</h2>
<canvas width="300" height="150" id="sample" style="background-color:yellow;">
図形を表示するには、canvasタグをサポートしたブラウザが必要です。
</canvas>
</body>
</html>