上一篇我們繪製過一個方塊,當作範例,讓我們來繪製更多圖案吧~!!
Fabricjs 在繪製之前,記得要對畫布做宣告,在上一篇也有寫過~沒忘記吧!!
var canvas =new fabric.Canvas(‘main’); // 要使用id=”main” 的 canvas 標籤
我們先準備HTML,引用JS就到fabricjs官方下載囉!
<body> <canvas id="main"></canvas> <script> var canvas =new fabric.Canvas('main'); // 要使用id="main" 的 canvas 標籤 ...... </script> </body>
Fabricjs提供以下可以物件可以建立
- 直線(Line)
- 圓形(Circle)
- 三角形(Triangle)
- 方型(Rect)
- 橢圓(Ellipse)
- 折線圖(Polyline)
- 多邊形(Polygon)
- 不規則圖形(Path)
- 文字(Text)
- 可編譯文字(IText)
- 圖片(fabric.Image)
以下介紹基本繪製方式。
1.直線
Fabricjs 提供兩個座標(x1,y1)(x2,y2) => [x1,y1,x2,y2] 會連成一直線,想像中需以(0,0)座標為出發點,不需管最後要放在畫面的哪裡,放哪裡由 left 和 top 控制囉。
var myLine = new fabric.Line([50, 50, 200, 100], { stroke: 'blue', strokeWidth: 2, // 必有欄位 top: 60, left: 30 }) canvas.add(myLine )
2.圓形:
提供半徑(radius)就可以繪製出一個圓了
var circle = new fabric.Circle({ left: 100, //左邊距離px top: 100, //上方距離 px radius: 20, //半徑px fill: 'green' //填色 }); canvas.add(circle); //新增至畫布
3.三角形:
如果要正三角,寬高給一樣就會是正三角形,不然都會是等腰三角形,如果忘記什麼是等腰三角形,國小數學老師會哭的。
var triangle = new fabric.Triangle({ left: 100, //左邊距離px top: 100, //上方距離 px width: 20, //寬 height: 30, //高 fill: 'blue' //填色 }); canvas.add(triangle ); //新增至畫布
4.方形:
方形就是提供很明顯的就是提供寬跟高 ,結束。
var rect = new fabric.Rect({ left:100,//左距離 px top:100,//上距離px fill:'red',//填色 width:30,//寬 height:30//高 }); canvas.add(rect); //新增至畫布
5.橢圓形
橢圓形與圓形差別在於不是提供半徑,而是提供上下彎(ry)的高度與左右彎(rx)的寬度。
canvas.add(new fabric.Ellipse({ left:100,//左距離 px top:100,//上距離px fill:'red',//填色 rx: 20, //左右寬度 ry: 40//上下高度 }));
6. Polyline(折線) & Polygon(多邊)
多邊形與折線圖,這兩個目前使用起來,繪製出來的效果我只能說是一模一樣,目前尚未知道差異在哪裡,如果有人知道,歡迎在底下留言跟我說下,感謝囉。
多邊形與折線圖都是提供多個座標,fabric會把所有座標依序連結起來,再把頭尾也連結起來形成一個圖形。
//座標位置 var points = [ {x:10,y:10}, {x:15,y:15}, {x:30,y:15}, {x:40,y:10}, {x:30,y:0}, {x:-10,y:-10} ]; canvas.add(new fabric.Polyline(points, { left:100,//左距離 px top:100 //上距離px })); canvas.add(new fabric.Polygon(points, { left:200,//左距離 px top:100 //上距離px }));
7.不規則圖形
不規則徒刑 path 是參照 SVG的繪製的語法,如果要學會怎麼畫,可以先去研究SVG,或者將圖片上傳到有提供SVG轉檔的網站囉。
//path 是參照 SVG的畫法 var path = new fabric.Path('M 0 0 L 200 100 L 170 200 z', { left: 100, //左邊距離px top: 100, //上方距離 px fill: 'blue' //填色 } ); canvas.add(path);
7. 文字
文字很簡單,只要提供,文字與座標
canvas.add(new fabric.Text('hello world', { left: 100, top: 100 }));
8.可編輯的文字
同上(懶),只是將Text => IText
canvas.add(new fabric.IText('hello world', { left: 100, top: 100 }));
9.圖片
圖片引用方式有兩種
- URL
- img標籤
//HTML <canvas id="main"></canvas> <img src="my_image.png" id="my-image">
// JS var canvas = new fabric.Canvas('main'); var imgElement = document.getElementById('my-image'); var imgInstance = new fabric.Image(imgElement, { left: 100, top: 100, angle: 30, opacity: 0.85 }); canvas.add(imgInstance);
使用Url做建立
//相對路徑 fabric.Image.fromURL('my_image.png', function(oImg) { canvas.add(oImg); }); //絕對路徑 fabric.Image.fromURL('https://www.myweb.con.tw/my_image.png', function(oImg) { canvas.add(oImg); });
以上就是基本的Fabric繪圖物件的基本使用方式囉,我們下次見,掰。