婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > 詳解Canvas實用庫Fabric.js使用手冊

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

熱門標簽:電話機器人技術 智能電銷機器人被禁用了么 地圖標注軟件打印出來 欣鼎電銷機器人 效果 惡搞電話機器人 如何查看地圖標注 ok電銷機器人 黃石ai電銷機器人呼叫中心 高德地圖標注商戶怎么標

簡介什么是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

繪制不規則圖形

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

在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);

對圖片的操作

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中

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:對象被移除

組合

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);

序列化與反序列化

序列化

  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/

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

標簽:綏化 阿壩 聊城 盤錦 赤峰 中山 萍鄉 金昌

巨人網絡通訊聲明:本文標題《詳解Canvas實用庫Fabric.js使用手冊》,本文關鍵詞  詳解,Canvas,實用,庫,Fabric.js,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《詳解Canvas實用庫Fabric.js使用手冊》相關的同類信息!
  • 本頁收集關于詳解Canvas實用庫Fabric.js使用手冊的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    在线免费不卡电影| 91精品国产综合久久小美女| 夜夜嗨av一区二区三区四季av | 欧美视频三区在线播放| 91色在线porny| 91黄色小视频| 欧美浪妇xxxx高跟鞋交| 欧美一区二区福利在线| 欧美电影免费观看高清完整版在线 | 免费观看一级特黄欧美大片| 奇米综合一区二区三区精品视频 | 国产精品另类一区| 国产精品久久777777| 亚洲天堂成人网| 99re热视频精品| 中文字幕一区在线观看视频| 美国三级日本三级久久99| 中文字幕日韩精品一区| 91蜜桃免费观看视频| 色丁香久综合在线久综合在线观看 | 国产免费成人在线视频| 欧美极品少妇xxxxⅹ高跟鞋| 亚洲色图.com| 久久成人18免费观看| 成人国产精品免费网站| 在线一区二区观看| 精品久久一区二区| 亚洲欧洲精品成人久久奇米网| 亚洲自拍偷拍麻豆| 九九精品视频在线看| 成人av电影免费观看| 欧美狂野另类xxxxoooo| 国产欧美一区二区精品秋霞影院| 一区二区三区在线视频免费| 精品亚洲国内自在自线福利| 色8久久精品久久久久久蜜| 日韩精品一区二区三区视频| 久久久精品影视| 日韩精品电影在线| 欧美日韩夫妻久久| 日本电影欧美片| 欧美mv日韩mv国产网站app| 中文字幕中文字幕在线一区| 日韩电影免费在线观看网站| 国产91精品久久久久久久网曝门| 欧美日韩一区二区欧美激情| 337p粉嫩大胆噜噜噜噜噜91av| 亚洲另类春色校园小说| 午夜精品一区二区三区电影天堂| 国产精品456| 在线电影一区二区三区| 中文字幕亚洲视频| 国产麻豆视频精品| 555www色欧美视频| 中文字幕亚洲区| 国产一区在线看| 久久精品视频一区二区三区| 91福利在线导航| 久久亚洲欧美国产精品乐播| 日韩精品一二区| 欧美亚洲自拍偷拍| 亚洲男人的天堂一区二区| 麻豆91在线看| 欧美日韩三级视频| 伊人开心综合网| 91蜜桃视频在线| 国产精品福利影院| 国产99久久久久| 久久精品日韩一区二区三区| 免费成人你懂的| 精品国产不卡一区二区三区| 日本欧美一区二区在线观看| 欧美天堂一区二区三区| 亚洲影视在线播放| 欧美日韩视频专区在线播放| 亚洲三级在线免费观看| 欧美怡红院视频| 日韩av一区二区在线影视| 欧美亚洲一区三区| 日本成人超碰在线观看| 日韩美女一区二区三区四区| 国内精品伊人久久久久av一坑 | 精一区二区三区| 日日摸夜夜添夜夜添亚洲女人| 国产亚洲污的网站| 91麻豆国产精品久久| 欧美国产欧美亚州国产日韩mv天天看完整 | 91国偷自产一区二区三区观看| 亚洲私人黄色宅男| 欧洲av一区二区嗯嗯嗯啊| 亚洲超碰精品一区二区| 7777女厕盗摄久久久| 狠狠色丁香婷婷综合| 亚洲欧洲日韩女同| 欧美高清你懂得| 成人性生交大合| 亚洲精品免费在线| 欧美一区二区三区四区在线观看| 久草在线在线精品观看| 国产精品国产精品国产专区不蜜| 日本韩国精品一区二区在线观看| 午夜av电影一区| 国产精品久久久久久久久快鸭| 久久爱www久久做| 欧美国产精品一区二区三区| 91一区二区三区在线播放| 怡红院av一区二区三区| 日韩视频不卡中文| 9色porny自拍视频一区二区| 亚洲成人免费视| 欧美精品一区二区三区久久久 | 欧美大片一区二区| 成人手机在线视频| 日韩一区欧美二区| 综合久久综合久久| 精品成人一区二区三区| 日本国产一区二区| 成人在线综合网| 麻豆视频观看网址久久| 综合久久国产九一剧情麻豆| 精品日韩一区二区三区免费视频| av电影天堂一区二区在线观看| 免费观看日韩电影| 五月天一区二区三区| 综合在线观看色| 2024国产精品视频| 日韩欧美一区在线| 欧美日韩中文字幕一区二区| 成人av资源在线观看| 国产成人一区二区精品非洲| 日本大胆欧美人术艺术动态 | 亚洲国产精品t66y| 久久久久久久久久久久久女国产乱| 欧美三日本三级三级在线播放| av资源站一区| 不卡的av在线播放| 成人影视亚洲图片在线| 韩国在线一区二区| 国产在线看一区| 美女尤物国产一区| 免费成人在线观看| 97se亚洲国产综合在线| 国产69精品一区二区亚洲孕妇| 亚洲精品国产a| 亚洲欧洲在线观看av| 亚洲日本一区二区三区| 亚洲图片激情小说| 亚洲男女毛片无遮挡| 亚洲乱码中文字幕综合| 亚洲欧美另类综合偷拍| 丝袜诱惑制服诱惑色一区在线观看 | av午夜精品一区二区三区| 毛片一区二区三区| 狠狠网亚洲精品| 老司机精品视频导航| 91丨九色丨国产丨porny| 91日韩在线专区| 丰满少妇久久久久久久| 亚洲色图制服丝袜| 亚洲少妇最新在线视频| 一区二区三区91| 日欧美一区二区| 久久国产精品第一页| 裸体健美xxxx欧美裸体表演| 男人的天堂久久精品| 激情综合色丁香一区二区| 国产成人精品免费一区二区| 丰满放荡岳乱妇91ww| 在线观看亚洲一区| 日韩欧美一级二级三级| 欧美国产精品一区二区三区| 亚洲精品v日韩精品| 日韩激情在线观看| 国产69精品久久777的优势| 欧美综合一区二区三区| 91麻豆精品国产| 中文字幕精品—区二区四季| 1024国产精品| 美女在线视频一区| 日本久久电影网| 精品99一区二区| 欧美色电影在线| 久久久国产一区二区三区四区小说| 亚洲免费看黄网站| 99re这里都是精品| 日韩一区二区三区精品视频| 91丨九色丨尤物| 视频一区二区欧美| 一区二区三区视频在线观看| 蜜桃视频免费观看一区| 91年精品国产| 日韩一级完整毛片| 国产精品国产a| 国产美女视频一区| 在线播放中文字幕一区| 中文字幕一区日韩精品欧美| 麻豆精品一区二区综合av| 在线观看亚洲精品| 国产精品天干天干在观线| 国产自产v一区二区三区c|