国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Fabric.js 拖拽頂點修改多邊形形狀

這篇具有很好參考價值的文章主要介紹了Fabric.js 拖拽頂點修改多邊形形狀。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。


theme: smartblue

我正在參加「掘金·啟航計劃」

本文簡介

戴尬猴,我是德育處主任

這次要介紹的一個demo是"拖拽多邊形定點修改多邊形形狀"。

其實 Fabric.js 官網(wǎng)也有這個demo:Fabric.js demos · Custom controls, polygon 。但這個demo可能對于剛接觸 Fabric.js 的工友來說有點過于復(fù)雜,所以本文就把該demo進一步簡化,簡化到老奶奶也能看得懂的!

先看看效果(錄制gif的工具有點小瑕疵,導(dǎo)致多邊形紅色填充色“被弄臟了”):

Fabric.js 拖拽頂點修改多邊形形狀

完整代碼在文末。

原理分析

要實現(xiàn)“拖拽多邊形定點修改多邊形形狀”這個功能有很多方案,比如 Fabric.js demos · Custom controls, polygon 中,通過自定義控件來實現(xiàn)。又或者用 《Fabric.js 講解官方demo:Stickman》 文章中的方法去實現(xiàn)。

使用 Fabric.js 官網(wǎng)給出的demo會更優(yōu)雅,推薦在工作中使用。但如果你看了官網(wǎng)的demo還不太懂怎么創(chuàng)建自定義控件,可以看看 《Fabric.js 自定義控件》 這篇文章。

本文使用對學(xué)習(xí)階段來說更容易理解的方案去實現(xiàn)上述功能。

先列出所有步驟:

  1. 綁定頁面上指定畫布 new fabric.Canvas()
  2. 創(chuàng)建多邊形,且禁止用戶直接操作多邊形 new fabric.Polygon()
  3. 在多邊形的每個頂點上創(chuàng)建小圓形(當(dāng)做修改多邊形時的控制器) new fabric.Circle()
  4. 監(jiān)聽元素移動,如果移動的是小圓形,那么多邊形對應(yīng)的頂點也跟著移動 canvas.on('object:moving', callback)
  5. 刷新畫布 canvas.renderAll()

以上就是需要做的所有操作了。

多邊形的配置

我們創(chuàng)建出來的多邊形是禁止用戶直接操作的,想要修改多邊形形狀只能通過輔助的小圓來修改。

要禁止多邊形的操作可以設(shè)置多邊形以下兩個屬性為 false

js selectable: false, // 禁止選中 evented: false, // 當(dāng)設(shè)置為“false”時,對象不能成為事件的目標(biāo)。所有事件都會通過它傳播。

還要將多邊形的 objectCaching 設(shè)置為 false,只有這樣做了,多邊形才不會有緩存。

圓形的配置

創(chuàng)建圓形時,需要將其 originXoriginY 設(shè)置為 center ,這樣圓形的圓心就是它的 topleft 了。這個做法和 《Fabric.js 講解官方demo:Stickman》 是一樣的。

除此之外還需要將 hasControlshasBorders 設(shè)置為 false ,這樣做完圓形就不會顯示控制角和控制邊了,看上去會更像是多邊形的控件。

最后還需要給每個圓形添加一個自定義屬性,當(dāng)圓形被移動時就可以用這個自定義屬性判斷當(dāng)前移動的是哪個圓。

動手實現(xiàn)

如果理解了上面的講解就看看下面的代碼吧(都有備注了,應(yīng)該比較好理解)

```html

```

代碼倉庫

? 修改多邊形形狀

推薦閱讀

??《Fabric.js 從入門到膨脹》

??《Fabric.js 講解官方demo:Stickman》

??《Fabric.js 激活輸入框》

??《Fabric.js 元素被選中時保持原有層級》

??《Fabric.js 精簡輸出的JSON》

??《Fabric.js 上標(biāo)和下標(biāo)的使用偏方》文章來源地址http://www.zghlxwxcb.cn/news/detail-438076.html

到了這里,關(guān)于Fabric.js 拖拽頂點修改多邊形形狀的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • three.js 點擊交互事件 含解決點擊的物體與看到的不一致問題(非全屏/多邊形偏移)

    在 three.js 中,可以通過添加事件監(jiān)聽器來實現(xiàn)點擊交互事件。具體步驟如下: 通過以上方法,可以實現(xiàn) three.js 中的點擊交互事件,并解決點擊的物體與看到的不一致問題。

    2024年02月06日
    瀏覽(94)
  • 如何判斷兩個多邊形是否相交?——多邊形相交判定算法詳解

    如何判斷兩個多邊形是否相交?——多邊形相交判定算法詳解 在計算機圖形學(xué)中,判斷兩個多邊形是否相交是一項很重要的任務(wù)。這涉及到各種應(yīng)用場景,如碰撞檢測、模擬物理效果等。在本篇文章中,我們將會介紹多邊形相交判定算法的相關(guān)知識和實現(xiàn)方式。 首先,我們

    2024年02月14日
    瀏覽(85)
  • opencv 之 外接多邊形(矩形、圓、三角形、橢圓、多邊形)使用詳解

    opencv 之 外接多邊形(矩形、圓、三角形、橢圓、多邊形)使用詳解

    本文主要講述opencv中的外接多邊形的使用: 多邊形近似 外接矩形、最小外接矩形 最小外接圓 外接三角形 橢圓擬合 凸包 將重點講述最小外接矩形的使用 給一個opencv官方的例程: 過程圖像如下: 橢圓擬合一般用于輪廓提取之后: 凸包繪制 計算兩個旋轉(zhuǎn)矩形交集: C++版的最

    2024年02月09日
    瀏覽(227)
  • 基于C++ 的OpenCV繪制多邊形,多邊形多條邊用不用的顏色繪制

    使用基于C++的OpenCV庫來繪制多邊形,并且為多邊形的不同邊使用不同的顏色,可以按照以下步驟進行操作: 首先,確保你已經(jīng)安裝了OpenCV庫并配置好了你的開發(fā)環(huán)境。 導(dǎo)入必要的頭文件: 創(chuàng)建一個空白的圖像,然后繪制多邊形,并為每條邊選擇不同的顏色: 在這個示例中,

    2024年02月13日
    瀏覽(89)
  • 3DS MAX三維建模平面基礎(chǔ)與初級多邊形(可編輯多邊形的講解)

    3DS MAX三維建模平面基礎(chǔ)與初級多邊形(可編輯多邊形的講解)

    ????????3DS MAX三維建模平面基礎(chǔ)與初級多邊形(可編輯多邊形的講解) ????????歡迎大家來學(xué)習(xí)3DS MAX教程,在這里先說一下研究好3ds Max一定要一邊看教程一邊要自己學(xué)的操作才能更快的進步,預(yù)祝大家學(xué)習(xí)順利。 ? ? ? ? 這篇是第四篇關(guān)于3ds Max的文章了,基于上一

    2024年04月12日
    瀏覽(92)
  • 計算兩個多邊形的交集

    計算兩個多邊形的交集

    已知兩個多邊形Polygon1和Polygon2,分別由點集C1={P1,P2,...,Pm}和C2={Q1,Q2,...,Qn}表示,求這兩個多邊形的交集。 兩個多邊形相交后,其頂點要么是兩個多邊形邊的交點,要么是在多邊形內(nèi)部的點。 計算兩個多邊形每條邊之間的交點。 計算包含在多邊形內(nèi)部的點。 將交點和多邊形內(nèi)

    2024年02月12日
    瀏覽(89)
  • 多邊形邊的插值

    多邊形邊的插值

    算法描述及提問: 給定一個最小長度,對多邊形的每一條邊不斷的對半插值,使得插值后的每一條邊都要不大于最小長度。 測試ChatGPT - 中文版 VSCode插件。 顯然是錯誤的。 正確的結(jié)果: 使用ChatGPT-中文版 VSCode,基本可以寫出一個簡單的算法,但是正確與否還需要個人Debug及

    2024年02月12日
    瀏覽(90)
  • 使用OpenCV的函數(shù)polylines()繪制多條相連的線段和多邊形;使用函數(shù)fillPoly()繪制帶填充效果的多邊形

    使用OpenCV的函數(shù)polylines()繪制多條相連的線段和多邊形;使用函數(shù)fillPoly()繪制帶填充效果的多邊形

    函數(shù)polylines()可用來根據(jù)點集繪制多條相連的線段,也可用來繪制多邊形。 函數(shù)polylines()有兩種原型,這里只向大家介紹比較常用的那種原型。 函數(shù)polylines()的C++原型如下: 函數(shù)polylines()的Python原型如下: 函數(shù)polylines()的參數(shù)意義如下: img—繪制的多條相連線段或多邊形所在

    2024年02月04日
    瀏覽(105)
  • C#凹多邊形求內(nèi)心

    在計算凹多邊形內(nèi)心時,一種常見的方法是使用三角剖分和重心法。您可以按照以下步驟進行: 將凹多邊形進行三角剖分,得到一系列三角形。 對每個三角形計算其重心,重心是三個頂點的平均值。 將所有三角形的重心進行平均,得到凹多邊形的內(nèi)心。 以下是一個簡單的示

    2024年01月25日
    瀏覽(95)
  • CAD泰森多邊形框架3D插件

    CAD泰森多邊形框架3D插件

    CAD泰森多邊形框架3D插件可用于在AutoCAD軟件內(nèi)生成三維Voronoi框架結(jié)構(gòu)實體模型,適用于多孔Voronoi科研論文渲染繪圖、Voronoi框架有限元建模、Voronoi空間結(jié)構(gòu)優(yōu)化等方面的應(yīng)用。 插件可設(shè)置生成的幾何尺寸、晶格尺寸及邊框直徑等信息。 插件可同時生成實體框架及線條框架兩

    2024年02月11日
    瀏覽(86)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包