亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > HTML > 正文

詳解Canvas實用庫Fabric.js使用手冊

2024-08-26 00:21:16
字體:
來源:轉載
供稿:網友

簡介什么是Fabric.js?

Fabric.js是一個可以簡化Canvas程序編寫的庫。 Fabric.js為Canvas提供所缺少的對象模型, svg parser, 交互和一整套其他不可或缺的工具。由于Fabric.js為國外框架,官方API雜亂繁多,相關文檔大多為英文文檔,而且數量不多,所以本文旨在幫助新手在項目中快速上手Fabric.js,享受繪制Canvas的過程。

為什么要使用Fabric.js?

Canvas提供一個好的畫布能力, 但是Api不夠友好。繪制簡單圖形其實還可以, 不過做一些復雜的圖形繪制, 編寫一些復雜的效果,就不是那么方便了。Fabric.js就是為此而開發,它主要就是用對象的方式去編寫代碼。

Fabric.js能做的事情

  • 在Canvas上創建、填充圖形(包括圖片、文字、規則圖形和復雜路徑組成圖形)。
  • 給圖形填充漸變顏色。
  • 組合圖形(包括組合圖形、圖形文字、圖片等)。
  • 設置圖形動畫集用戶交互。
  • 生成JSON, SVG數據等。
  • 生成Canvas對象自帶拖拉拽功能。

起步

Vue項目中引入Fabric.js

假設您的項目中正在使用ES6和Webpack,您可以開始使用Fabric.js,如下所示:

1、在命令行中:

npm install fabric(或yarn add fabric)

2、將其引入 .vue 文件中

import { fabric } from 'fabric'

3、在 .vue 的單文件中的 mounted: 生命周期里開始你的Fabric.js之旅啦

注:默認的fabric npm模塊產生了相當大的包,如果Fabric.js中您有很多可能不需要的包,在這種情況下,可以在 在此處 或在命令行中構建你自己的版本。

繪制圖形

繪制規則圖形

1、聲明畫布

var canvas =new fabric.Canvas('main');

2、繪制圖形

    var rect = new fabric.Rect({           left:100,//距離畫布左側的距離,單位是像素           top:100,//距離畫布上邊的距離           fill:'red',//填充的顏色           width:30,//方形的寬度          height:30//方形的高度       });

3、添加圖形至畫布

canvas.add(rect);

其他規則圖形:

  • 繪制方形 var rect = new fabric.Rect
  • 繪制圓形 var circle = new fabric.Circle
  • 繪制三角形 var triangle = new fabric.Triangle

Canvas,實用庫,Fabric.js,使用手冊

繪制不規則圖形

使用路徑繪圖:用點和線的移動的方式進行繪圖。通過對 線、曲線、弧的應用繪制非常復雜的圖形。

在fabric.Path( )方法中,“M”代表“移動”命令,這個“M 00” 代表把畫筆移動到(0,0)點坐標。

“L”代表“線”,“L 200 100 ”的意思是使用鋼筆畫一條線,從(0,0)坐標畫到(200,100)坐標。 “z” 代表讓圖形閉合路徑。

畫好三角形后,我們可以用set( )方法對三角形的位置、顏色、角度、透明度等屬性進行設置。

具體代碼如下:

 var path = new fabric.Path('M 0 0 L 200 100 L 170 200 z');path.set({ left: 120, top: 120,fill:'red' });canvas.add(path);

Canvas,實用庫,Fabric.js,使用手冊

對圖片的操作

HTML插入圖片

     <body>           <canvas id="canvas" width='800' height='800'></canvas>           <img src="./2.png" id="img">       </body>       ---------------------       var canvas = new fabric.Canvas('canvas');//聲明畫布       var imgElement = document.getElementById('img');//聲明我們的圖片            var imgInstance = new fabric.Image(imgElement,{  //設置圖片位置和樣子            left:100,            top:100,            width:200,            height:100,            angle:30//設置圖形順時針旋轉角度       });             canvas.add(imgInstance);//加入到canvas中

Canvas,實用庫,Fabric.js,使用手冊

JavaScript插入圖片

     var canvas = new fabric.Canvas('canvas');           fabric.Image.fromURL('./2.png', function(oImg) {           oImg.scale(0.1);//圖片縮小10倍           canvas.add(oImg);       }); 

交互

對畫布的交互

    canvas.add(imgInstance);//加入到canvas中       var canvas = new fabric.Canvas('canvas');       canvas.on('mouse:down', function(options) {           console.log(options.e.clientX, options.e.clientY)       })

注:常用監聽事件如下:

  • mouse:down:鼠標按下時
  • mouse:move:鼠標移動時
  • mouse:up:鼠標抬起時

對畫布上對象的操作

     var canvas = new fabric.Canvas('canvas');       var rect = new fabric.Rect({ width: 100, height: 50, fill: 'green' });       rect.on('selected', function() {//選中監聽事件           console.log('selected a rectangle');       });        var circle = new fabric.Circle({ radius: 75, fill: 'blue' });       circle.on('selected', function() {           console.log('selected a circle');       });       canvas.add(rect);       canvas.add(circle);

注:常用監聽事件如下:

  • after:render:畫布重繪后
  • object:selected:對象被選中
  • object:moving:對象移動
  • object:rotating:對象被旋轉
  • object:added:對象被加入
  • object:removed:對象被移除

Canvas,實用庫,Fabric.js,使用手冊

組合

new fabric.Group():接受兩個參數:要組合對象名稱組成的數組、組合到一起的對象的共同屬性。

 var canvas = new fabric.Canvas('canvas');        var circle = new fabric.Circle({//繪制圓形        radius: 100,        fill: '#f00',        scaleY: 0.5,        originX: 'center',//調整中心點的X軸坐標        originY: 'center'//調整中心點的Y軸坐標      });     var text = new fabric.Text('Hello World', {//繪制文本       fontSize: 30,       originX: 'center',       originY: 'center'    })    //進行組合    var group = new fabric.Group([circle, text], {      left: 150,      top: 100,      angle: 10    })    canvas.add(group);

Canvas,實用庫,Fabric.js,使用手冊

序列化與反序列化

序列化

  var canvas = new fabric.Canvas('canvas');    var rect = new fabric.Rect({        width: 100,        height: 100,        fill: 'red'    });    canvas.add(rect);        console.log(JSON.stringify(canvas.toJSON()));

反序列化

var canvas = new fabric.Canvas('canvas');    canvas.loadFromJSON('{"objects":[{"type":"rect","left":50,"top":50,"width":20,"height":20,"fill":"green","overlayFill":null}')

SVG

   var canvas = new fabric.Canvas('canvas');    var rect = new fabric.Rect({        width: 100,        height: 100,        fill: 'red'    });    canvas.add(rect);    canvas.toSVG();

參考文檔:http://fabricjs.com/articles/

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VeVb武林網。


注:相關教程知識閱讀請移步到HTML教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
91国内揄拍国内精品对白| 日韩暖暖在线视频| 国产97在线|日韩| 综合国产在线视频| 久久成人这里只有精品| 国产成人精品综合久久久| 欧美午夜性色大片在线观看| 日本国产一区二区三区| 国产精品女主播视频| 北条麻妃在线一区二区| 少妇高潮 亚洲精品| 情事1991在线| 91精品视频观看| 亚洲最大福利网| 2019中文字幕在线观看| 国产偷国产偷亚洲清高网站| 亚洲福利视频网站| 日韩欧美一区视频| 亚洲福利小视频| 91精品视频在线| 青草热久免费精品视频| 高清欧美性猛交xxxx| 视频直播国产精品| 91手机视频在线观看| 欧美日韩国产综合新一区| 午夜精品免费视频| 欧洲成人性视频| 日韩av电影中文字幕| 亚洲人成在线免费观看| 日韩av在线免费| 午夜欧美不卡精品aaaaa| 国产欧美一区二区三区在线| 成人精品福利视频| 国产欧美一区二区三区久久| 国产亚洲精品久久久久久牛牛| 国产精品福利在线观看网址| 国产成人精品日本亚洲| 亚洲一区二区久久久| 国产精品高清在线观看| 国产精品视频区| 亚洲欧美激情在线视频| 91成人性视频| 欧美性xxxx18| 久热精品在线视频| 久久精品人人做人人爽| 欧美电影免费观看高清完整| 欧美电影免费观看| 成人黄色免费网站在线观看| 丁香五六月婷婷久久激情| 亚洲国产欧美一区二区三区久久| 国产成人精品综合久久久| 日韩成人在线网站| 岛国av午夜精品| 国产a∨精品一区二区三区不卡| 国产一区二区三区网站| 久久天天躁狠狠躁夜夜躁| 国产日韩欧美黄色| 亚洲一区二区久久久久久| 国产va免费精品高清在线观看| 亚洲天堂男人的天堂| 欧美性做爰毛片| 久久久av亚洲男天堂| 国产视频精品在线| 欧美激情xxxxx| 97免费中文视频在线观看| 亚洲日本中文字幕| 国产高清在线不卡| 欧美做受高潮电影o| 日本中文字幕久久看| 色综合久久天天综线观看| 影音先锋日韩有码| 日本视频久久久| 97在线看福利| 色婷婷综合成人| 性欧美xxxx| 欧美中文在线字幕| 中文字幕成人在线| 91九色国产视频| 国产精品9999| 神马国产精品影院av| 美女久久久久久久久久久| 庆余年2免费日韩剧观看大牛| 欧美日韩精品在线播放| 亚洲电影免费观看高清完整版在线观看| 久久久久亚洲精品成人网小说| 亚洲国产精品专区久久| 欧美视频在线观看免费网址| 久久久免费在线观看| 亚洲国产另类 国产精品国产免费| 亚洲天堂成人在线| 91在线精品播放| 日韩大片免费观看视频播放| 国产精品69精品一区二区三区| 另类少妇人与禽zozz0性伦| 欧美精品电影在线| 亚洲三级黄色在线观看| 成人www视频在线观看| 九九热r在线视频精品| 欧美xxxx14xxxxx性爽| 久久久精品国产一区二区| 日韩欧中文字幕| 亚洲免费视频一区二区| 亚洲区在线播放| 国产精品久久久久久久美男| 亚洲欧美999| 亚洲成人av在线| 色yeye香蕉凹凸一区二区av| 亚洲free性xxxx护士白浆| 在线播放日韩专区| 亚洲欧美成人精品| 中文字幕国产精品| 中文字幕一区日韩电影| 一本色道久久综合亚洲精品小说| 色综合久久悠悠| 亚洲一区二区自拍| 在线电影中文日韩| 久久久久久久成人| 97福利一区二区| 亚洲欧美一区二区激情| 国产欧美精品xxxx另类| 国产91精品青草社区| 成人欧美一区二区三区黑人孕妇| 国产69精品久久久久9999| 成人免费观看a| 在线观看欧美日韩| 亚洲2020天天堂在线观看| 久久久女人电视剧免费播放下载| 九九热精品视频| 日韩电影大片中文字幕| 欧美性猛交丰臀xxxxx网站| 欧美激情在线观看视频| 国产精品流白浆视频| 日韩少妇与小伙激情| 欧美亚洲午夜视频在线观看| 8x海外华人永久免费日韩内陆视频| 91久久国产婷婷一区二区| 亚洲精品国产精品自产a区红杏吧| 国产日产欧美a一级在线| 北条麻妃一区二区三区中文字幕| 欧美精品一区二区三区国产精品| 91欧美视频网站| 国产www精品| 欧美激情一二区| 日韩精品视频在线免费观看| 亚洲精品av在线播放| 日韩欧美在线视频| 国产成人精品视频| 国产精品白丝av嫩草影院| 日韩免费在线电影| 欧美刺激性大交免费视频| 日韩精品在线观看网站| 国产一区视频在线播放| 中文字幕亚洲在线| 亚洲一区中文字幕在线观看| 久久夜精品va视频免费观看| 色噜噜狠狠狠综合曰曰曰| 91免费精品视频| 国产a级全部精品| 亚洲精品av在线| 日韩成人av网| 国产精品高潮呻吟久久av野狼| 亚洲精品国产福利| 久久国产色av| 亚洲网在线观看|