Fabric.js 拖拽顶点修改多边形形状

这篇具有很好参考价值的文章主要介绍了Fabric.js 拖拽顶点修改多边形形状。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


theme: smartblue

我正在参加「掘金·启航计划」

本文简介

戴尬猴,我是德育处主任

这次要介绍的一个demo是"拖拽多边形定点修改多边形形状"。

其实 Fabric.js 官网也有这个demo:Fabric.js demos · Custom controls, polygon 。但这个demo可能对于刚接触 Fabric.js 的工友来说有点过于复杂,所以本文就把该demo进一步简化,简化到老奶奶也能看得懂的!

先看看效果(录制gif的工具有点小瑕疵,导致多边形红色填充色“被弄脏了”):

Fabric.js 拖拽顶点修改多边形形状

完整代码在文末。

原理分析

要实现“拖拽多边形定点修改多边形形状”这个功能有很多方案,比如 Fabric.js demos · Custom controls, polygon 中,通过自定义控件来实现。又或者用 《Fabric.js 讲解官方demo:Stickman》 文章中的方法去实现。

使用 Fabric.js 官网给出的demo会更优雅,推荐在工作中使用。但如果你看了官网的demo还不太懂怎么创建自定义控件,可以看看 《Fabric.js 自定义控件》 这篇文章。

本文使用对学习阶段来说更容易理解的方案去实现上述功能。

先列出所有步骤:

  1. 绑定页面上指定画布 new fabric.Canvas()
  2. 创建多边形,且禁止用户直接操作多边形 new fabric.Polygon()
  3. 在多边形的每个顶点上创建小圆形(当做修改多边形时的控制器) new fabric.Circle()
  4. 监听元素移动,如果移动的是小圆形,那么多边形对应的顶点也跟着移动 canvas.on('object:moving', callback)
  5. 刷新画布 canvas.renderAll()

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

多边形的配置

我们创建出来的多边形是禁止用户直接操作的,想要修改多边形形状只能通过辅助的小圆来修改。

要禁止多边形的操作可以设置多边形以下两个属性为 false

js selectable: false, // 禁止选中 evented: false, // 当设置为“false”时,对象不能成为事件的目标。所有事件都会通过它传播。

还要将多边形的 objectCaching 设置为 false,只有这样做了,多边形才不会有缓存。

圆形的配置

创建圆形时,需要将其 originXoriginY 设置为 center ,这样圆形的圆心就是它的 topleft 了。这个做法和 《Fabric.js 讲解官方demo:Stickman》 是一样的。

除此之外还需要将 hasControlshasBorders 设置为 false ,这样做完圆形就不会显示控制角和控制边了,看上去会更像是多边形的控件。

最后还需要给每个圆形添加一个自定义属性,当圆形被移动时就可以用这个自定义属性判断当前移动的是哪个圆。

动手实现

如果理解了上面的讲解就看看下面的代码吧(都有备注了,应该比较好理解)

```html

```

代码仓库

⭐ 修改多边形形状

推荐阅读

👍《Fabric.js 从入门到膨胀》

👍《Fabric.js 讲解官方demo:Stickman》

👍《Fabric.js 激活输入框》

👍《Fabric.js 元素被选中时保持原有层级》

👍《Fabric.js 精简输出的JSON》

👍《Fabric.js 上标和下标的使用偏方》文章来源地址https://www.toymoban.com/news/detail-438076.html

到了这里,关于Fabric.js 拖拽顶点修改多边形形状的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • three.js 点击交互事件 含解决点击的物体与看到的不一致问题(非全屏/多边形偏移)

    在 three.js 中,可以通过添加事件监听器来实现点击交互事件。具体步骤如下: 通过以上方法,可以实现 three.js 中的点击交互事件,并解决点击的物体与看到的不一致问题。

    2024年02月06日
    浏览(62)
  • 如何判断两个多边形是否相交?——多边形相交判定算法详解

    如何判断两个多边形是否相交?——多边形相交判定算法详解 在计算机图形学中,判断两个多边形是否相交是一项很重要的任务。这涉及到各种应用场景,如碰撞检测、模拟物理效果等。在本篇文章中,我们将会介绍多边形相交判定算法的相关知识和实现方式。 首先,我们

    2024年02月14日
    浏览(67)
  • opencv 之 外接多边形(矩形、圆、三角形、椭圆、多边形)使用详解

    本文主要讲述opencv中的外接多边形的使用: 多边形近似 外接矩形、最小外接矩形 最小外接圆 外接三角形 椭圆拟合 凸包 将重点讲述最小外接矩形的使用 给一个opencv官方的例程: 过程图像如下: 椭圆拟合一般用于轮廓提取之后: 凸包绘制 计算两个旋转矩形交集: C++版的最

    2024年02月09日
    浏览(104)
  • 基于C++ 的OpenCV绘制多边形,多边形多条边用不用的颜色绘制

    使用基于C++的OpenCV库来绘制多边形,并且为多边形的不同边使用不同的颜色,可以按照以下步骤进行操作: 首先,确保你已经安装了OpenCV库并配置好了你的开发环境。 导入必要的头文件: 创建一个空白的图像,然后绘制多边形,并为每条边选择不同的颜色: 在这个示例中,

    2024年02月13日
    浏览(58)
  • 3DS MAX三维建模平面基础与初级多边形(可编辑多边形的讲解)

            3DS MAX三维建模平面基础与初级多边形(可编辑多边形的讲解)         欢迎大家来学习3DS MAX教程,在这里先说一下研究好3ds Max一定要一边看教程一边要自己学的操作才能更快的进步,预祝大家学习顺利。         这篇是第四篇关于3ds Max的文章了,基于上一

    2024年04月12日
    浏览(76)
  • 多边形边的插值

    算法描述及提问: 给定一个最小长度,对多边形的每一条边不断的对半插值,使得插值后的每一条边都要不大于最小长度。 测试ChatGPT - 中文版 VSCode插件。 显然是错误的。 正确的结果: 使用ChatGPT-中文版 VSCode,基本可以写出一个简单的算法,但是正确与否还需要个人Debug及

    2024年02月12日
    浏览(72)
  • 计算两个多边形的交集

    已知两个多边形Polygon1和Polygon2,分别由点集C1={P1,P2,...,Pm}和C2={Q1,Q2,...,Qn}表示,求这两个多边形的交集。 两个多边形相交后,其顶点要么是两个多边形边的交点,要么是在多边形内部的点。 计算两个多边形每条边之间的交点。 计算包含在多边形内部的点。 将交点和多边形内

    2024年02月12日
    浏览(71)
  • 使用OpenCV的函数polylines()绘制多条相连的线段和多边形;使用函数fillPoly()绘制带填充效果的多边形

    函数polylines()可用来根据点集绘制多条相连的线段,也可用来绘制多边形。 函数polylines()有两种原型,这里只向大家介绍比较常用的那种原型。 函数polylines()的C++原型如下: 函数polylines()的Python原型如下: 函数polylines()的参数意义如下: img—绘制的多条相连线段或多边形所在

    2024年02月04日
    浏览(70)
  • C#凹多边形求内心

    在计算凹多边形内心时,一种常见的方法是使用三角剖分和重心法。您可以按照以下步骤进行: 将凹多边形进行三角剖分,得到一系列三角形。 对每个三角形计算其重心,重心是三个顶点的平均值。 将所有三角形的重心进行平均,得到凹多边形的内心。 以下是一个简单的示

    2024年01月25日
    浏览(67)
  • CAD泰森多边形框架3D插件

    CAD泰森多边形框架3D插件可用于在AutoCAD软件内生成三维Voronoi框架结构实体模型,适用于多孔Voronoi科研论文渲染绘图、Voronoi框架有限元建模、Voronoi空间结构优化等方面的应用。 插件可设置生成的几何尺寸、晶格尺寸及边框直径等信息。 插件可同时生成实体框架及线条框架两

    2024年02月11日
    浏览(55)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包