HTML5のCanvasタグの使い方を簡単に説明します。見やすいようにWebレイアウトがいつもと違います。
<canvas></canvas>は図や絵を描く事が出来る便利な機能ですが、Javascriptを使うので非常に難しいです。
<body>~</body>内に書くのは以下の一行だけです。
<canvas id="graph1" width="300" height="300"></canvas>
必ずidとwidthとheightは設定して下さい。
あとはスクリプトを書くだけです。
最小構成は以下のようになります。○○○部分に命令を書いていきます。
<script type="text/javascript">
window.onload = draw; // 自動でスクリプトが実行するために必要
function draw(){
var canvas1 = document.getElementById('graph1'); // id=graph1の要素をcanvas1として記憶
var line1 = canvas1.getContext('2d'); // canvas1に二次元図を描く命令。指定できる引数は '2d' のみ
line1.○○○
line1.○○○
}
</script>
最も簡単なHTMLはこちら。canvasタグの下にscriptを書く場合にはwindow.onloadとfunction draw(){}で囲む必要は無い。
fillRect(20,10,50,40); (サンプル) 四角形:(横位置,縦位置,横幅,縦幅)、単体で動く
clearRect(30,20,30,20); (サンプル) 四角形の透明化:(横位置,縦位置,横幅,縦幅)
fill(); (サンプル) パス範囲を塗りつぶす
fillStyle = 'rgba(255,0,0,0.5)'; (サンプル) 塗りつぶし色:(R,G,B,α)
線形グラデーション (サンプル) (開始横位置,開始縦位置,終点横位置,終点縦位置)、(距離,色)、距離は0から1
var grad = line1.createLinearGradient(20,10,170,150);
grad.addColorStop(0,'rgb(255,0,0)');
grad.addColorStop(0.5,'rgb(0,255,0)');
grad.addColorStop(1,'rgb(0,0,255)');
line1.fillStyle = grad;
円形グラデーション (サンプル) (開始横位置,開始縦位置,開始半径,終点横位置,終点縦位置,終点半径)、(距離,色)、距離は0から1
var grad = line1.createRadialGradient(80,70,20,80,70,60);
grad.addColorStop(0,'rgb(255,0,0)');
grad.addColorStop(0.5,'rgb(0,255,0)');
grad.addColorStop(1,'rgb(0,0,255)');
line1.fillStyle = grad;
moveTo(80, 10); (サンプル) 開始座標を指定:(横位置,縦位置)
lineTo(80, 70); (サンプル) 直線を引く:(横位置,縦位置)
arc(45,80,25,90/180*Math.PI,270/180*Math.PI, false); (サンプル) 円を書く:(横位置,縦位置,半径,開始角度/180*Math.PI,終了角度/180*Math.PI,true[半時計]false[正時計])
0°と360°は3時位置、90°は6時位置、180°は9時位置
quadraticCurveTo(150,80,180,40); (サンプル) 指定の制御点を伴う二次ベジェ曲線を引く:(制御点x,制御点y,終点横位置,終点縦位置)
bezierCurveTo(130,80,150,20,180,40); (サンプル) 指定の制御点を伴う三次ベジェ曲線を引く:(制御点1x,制御点1y,制御点2x,制御点2y,終点横位置,終点縦位置)
arcTo(80,40,1,80,8); (サンプル) 直線と円弧を引く:(制御点1x,制御点1y,制御点2x,制御点2y,角の丸み)
rect(20,10,50,40); (サンプル) 四角形を引く:(横位置,縦位置,横幅,縦幅)、単体で動く、strokeRectで十分
closePath(); (サンプル) パスを閉じる
beginPath(); (サンプル) 現在のパスをリセットする
strokeRect(20,60,50,40); (サンプル) 四角形の線:(横位置,縦位置,横幅,縦幅)、単体で動く
stroke(); (サンプル) パスに線を引く
strokeStyle = 'rgba(0,255,0,0.5)'; (サンプル) 線の色:(R,G,B,α)
lineWidth = 4; (サンプル) 線の太さ
lineCap = "round"; (サンプル) 端点の形を指定、["butt"(普通にぶつ切り), "round"(丸), "square"(四角)]
lineJoin = "round"; (サンプル) 線の繋ぎ目の処理を指定、["miter"(尖らせる), "round"(丸く面取り), "bevel"(直線で面取り)]
miterLimit = 10; (サンプル) lineJoin="miter" 時の処理を指定、(0から10の値)、小さいほど鋭角で"bevel"になる
setLineDash([5, 15]); (サンプル) 破線にする、[線の長さ,途切れる長さ]、リセットするにはsetLineDash([])と書く、比較的新しめのブラウザしか対応してない(IE11以上)
shadowColor = "#f00"; (サンプル) 影の色
shadowOffsetX = 8; (サンプル) 横方向の影の幅
shadowOffsetY = 8; (サンプル) 縦方向の影の幅
shadowBlur = 10; (サンプル) 影のぼかし具合
rotate(45/180*Math.PI); (サンプル) 回転する:(角度/180*Math.PI)、座標(0,0)中心で回転、translateで中心移動させる
scale(2,0.6); (サンプル) 倍率:(横倍率,縦倍率)
translate(40,100); (サンプル) 移動:(横移動,縦移動)
globalAlpha = 0.5; (サンプル) 透明度、strokeより先に設定しないと反映されない
fillText("Happy",10, 20); (サンプル) 文字を書く:("文字",横位置,縦位置,maxWidth)、maxWidthは無くても良い
strokeText("Happy",10, 20); (サンプル) 中抜き文字を書く:("文字",横位置,縦位置,maxWidth)、maxWidthは無くても良い
font = "italic bold 32px 'Times New Roman'"; (サンプル) 文字属性:(italic bold pxサイズ '文字種')
textAlign = "center"; (サンプル) 配置位置:("left","right","center")
textBaseline = "bottom"; (サンプル) ベースライン:("bottom","alphabetic","middle","hanging","top")
画像の挿入 (サンプル) (URL,横位置,縦位置)
var img = new Image();
img.src = "image.jpg";
line1.drawImage(img,20,10);
clip() (サンプル) パス内に画像を表示させる