環境
Angular: 15
Fabric.js: 5.3.0
Fabric.jsとは?
Canvas
内に画像やテキストを配置したりすることのできるライブラリ。
配置した要素の「移動」、「リサイズ」、「回転」など非常に自由度高く操作することができる。
お絵描きアプリとかを作ることができる。
インストール
$ npm i fabric
betaでバージョン6が公開されており、5から6で破壊的な変更があるっぽい。
つまり5を入れておくと、いずれ大規模な修正が必要になる可能性がある。
けど、解説とかは5の方が多いし、6がまだbetaということで5を入れることにした。
🧐 Breaking changes for fabric 6.0
次に定義ファイルも必要になったので"npm i @types/fabric": "^5.3.7",
でインストールした。
実装
template
<canvas width="300" height="300" #canvasEl> </canvas>
まずテンプレート側でcanvas>
を作成する。
component
次に、
@ViewChild('canvasEl') canvasEl: ElementRef | undefined;
コンポーネント側でcanvas
を取得し、
ngAfterViewInit() {
if(this.canvasEl) {
const canvas = new fabric.Canvas(this.canvasEl.nativeElement);
const rect = new fabric.Rect({
top: 100,
left: 100,
width: 60,
height: 70,
fill: 'red',
});
canvas.add(rect);
} else {
throw new Error('Canvasの取得に失敗しました。')
}
}
fabric
を呼び出す。
これで画面表示まで行けた。
ちなみに画面全体にcanvas
を広げたい場合は、
canvas.setDimensions({width:number, height:number});
で実現できる。
〇 追記
dom
を動かしたかったというのがあるので、Fabric.js
ではなくinteract
を採用した。