fabricjs的polygon如何在指定的位置增加新的顶点,而不使原多边形形状扭曲呢?

作者站长头像
站长
· 阅读数 15

直接向polygon的points数组中插入新的点会自动使其变形,貌似是由于polygon是根据points数组中点的顺序绘制的?如何才能在原轮廓上增加新顶点而不改变图形呢

回复
1个回答
avatar
test
2024-07-16

绘制 polygon 肯定要按照数据的顺序来绘制。我理解你的想法,以为如果加入新节点的话应该自动把节点插入到最近的两个点之间,polygon 负责找到最短的路径来绘制多边形。但是这样一来就没有办法直接绘制有非最短路径的多边形了,并且绘制的运算量会很大(需要遍历计算节点距离并取最短)、开发者对图形的控制力下降(如果要绘制非最短路径的多边形,则需要额外的参数来修改绘制顺序),所以 polygon 把这个问题交给开发者自己处理。正确的方法是自己计算插入节点在数组中的位置,然后插入到数组相应位置:MDN 文档:Array.prototype.splice

回复
likes
适合作为回答的
  • 经过验证的有效解决办法
  • 自己的经验指引,对解决问题有帮助
  • 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
  • 询问内容细节或回复楼层
  • 与题目无关的内容
  • “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容