Fabric.jsでcanvasにフリーハンドの自由線を書く
公開:
Fabric.jsを使用し、HTML5のcanvas内にフリーハンドで自由線を書く方法です。描かれた1筆分の線は1要素となり、通常の図形のように移動/拡縮/回転ができます。
デモ
先ずはお試しを。色や太さを変えたりして枠内をなぞってみてください。
このデモではモードを切り替えられるようにしています。要素選択モード(フリードローモードをオフ)にすると、書いた自由線の1筆分が1要素となって通常の図形のように移動/拡縮/回転ができます。
・モード
・色
・太さ
ソースコード例
上記デモの一部コード例です。
<canvas id="cvs" width="300" height="240"></canvas> <label><input type="radio" name="mode" value="draw" checked>自由線</label> <label><input type="radio" name="mode" value="select">要素選択</label> <lavel>色</label> <input id="draw-color" type="color" value="#000"> <lavel>太さ</label> <input id="draw-width" type="range" value="1" min="1" max="10" step="1">
var canvas = new fabric.Canvas('cvs');
//モード切替
$('[name=mode]').click(function(){
if ($('[name=mode]:checked').val() === 'draw') {
canvas.isDrawingMode = true; //自由線
} else {
canvas.isDrawingMode = false; //要素選択
}
});
//色
$('#draw-color').change(function(){
canvas.freeDrawingBrush.color = this.value;
});
//太さ
$('#draw-width').change(function(){
canvas.freeDrawingBrush.width = this.value - 0;
});
行と説明
- 6,8
- isDrawingMode = true で自由線が書け、false で要素選択ができます。書いた自由線やすでにある要素を選択できるようにするには false にします。
- 14
- freeDrawingBrush.colorは色の値で、'#000000'、'#000'、'rgb()'の形式の他に'black'など名称が使用できます。
- 19
- freeDrawingBrush.widthは太さの値でピクセル単位です。-0で数値型に変換しています。文字型を代入すると一見動作するように見えますが、要素選択枠が異常な範囲になる場合があります。
Web制作実験